Delen via


Compilerwaarschuwing (niveau 1) C4382

'type' genereren: een type met een __clrcall destructor of kopieconstructor kan alleen worden afgevangen in een /clr:pure module.

Opmerkingen

De optie /clr:pure compiler is afgeschaft in Visual Studio 2015 en wordt niet ondersteund in Visual Studio 2017.

Bij compilatie met /clr (niet /clr:pure) verwacht de uitzonderingsafhandeling dat de lidfuncties in een systeemeigen type moeten __cdecl zijn en niet __clrcall. Systeemeigen typen met lidfuncties die gebruikmaken van __clrcall aanroepconventie kunnen niet worden opgevangen in een module die is gecompileerd met /clr.

Als de uitzondering wordt opgevangen in een module die is gecompileerd met /clr:pure, kunt u deze waarschuwing negeren.

Zie /clr (Common Language Runtime Compilation) voor meer informatie.

Example

In het volgende voorbeeld wordt C4382 gegenereerd.

// 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
}