Freigeben über


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
}