編譯器警告 (層級 1) C4382
擲回 'type' :具有__clrcall解構函式或複製建構函式的類型只能在 /clr:pure 模組中攔截
備註
Visual Studio 2015 中已淘汰 /clr:pure 編譯程序選項,Visual Studio 2017 不支援。
使用 /clr 編譯時(不是 /clr:p ure),例外狀況處理會預期原生類型中的成員函式__cdecl,而不是__clrcall。 使用呼叫慣例搭配成員函式的原生型別無法在以 __clrcall
/clr 編譯的模組中攔截。
如果在以 /clr:pure 編譯的模組中攔截到例外狀況,您可以忽略此警告。
如需詳細資訊,請參閱 /clr (Common Language Runtime 編譯)。
範例
下列範例會產生 C4382。
// C4382.cpp
// compile with: /clr /W1 /c
struct S {
__clrcall ~S() {}
};
struct T {
~T() {}
};
int main() {
S s;
throw s; // C4382
S * ps = &s;
throw ps; // OK
T t;
throw t; // OK
}