Compilerwarnung (Ebene 1) C4382
Auslösen von 'type': Ein Typ mit __clrcall Destruktor oder Kopierkonstruktor kann nur in /clr:pure module abgefangen werden.
Hinweise
Die Option "/clr:pure compiler" ist in Visual Studio 2015 veraltet und wird in Visual Studio 2017 nicht unterstützt.
Bei der Kompilierung mit /clr (nicht /clr:pure) erwartet die Ausnahmebehandlung, dass die Memberfunktionen in einem systemeigenen Typ __cdecl und nicht __clrcall werden. Systemeigene Typen mit Memberfunktionen, die die Aufrufkonvention verwenden __clrcall
, können nicht in einem Modul erfasst werden, das mit "/clr" kompiliert wurde.
Wenn die Ausnahme in einem Modul erfasst wird, das mit "/clr:pure" kompiliert wurde, können Sie diese Warnung ignorieren.
Weitere Informationen finden Sie unter /clr (Common Language Runtime-Kompilierung).
Beispiel
Im folgenden Beispiel wird C4382 generiert.
// 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
}