Dela via


Kompilatorvarning (nivå 1) C4382

throwing "type" : en typ med __clrcall-destruktor eller kopieringskonstruktor kan endast fångas i en /clr:pure modul

Anmärkningar

Kompileringsalternativet /clr:pure är inaktuellt i Visual Studio 2015 och stöds inte i Visual Studio 2017.

När den kompileras med /clr (inte /clr:pure) förväntar sig undantagshanteringen att medlemsfunktionerna i en intern typ är __cdecl och inte __clrcall. Inbyggda typer med medlemsfunktioner som använder __clrcall anropskonvention kan inte fångas i en modul som kompilerats med /clr.

Om undantaget fångas i en modul som kompilerats med /clr:pure kan du ignorera den här varningen.

Mer information finns i /clr (Common Language Runtime Compilation).

Example

I följande exempel genereras 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
}