Compartir a través de


Advertencia del compilador (nivel 1) C4382

se genera "type": un tipo con el destructor __clrcall o el constructor de copia solamente se puede detectar en el módulo /clr:pure

Comentarios

La opción del compilador /clr:pure está en desuso en Visual Studio 2015 y no se admite en Visual Studio 2017.

Cuando se compila con /clr (y no con /clr:pure), el control de excepciones espera que las funciones miembro de un tipo nativo sean __cdecl y no __clrcall. Los tipos nativos con funciones miembro que usan la convención de llamada __clrcall no se pueden detectar en un módulo compilado con /clr.

Si la excepción se detectará en un módulo compilado con /clr:pure, puede omitir esta advertencia.

Para obtener más información, consulte /clr (Compilación de Common Language Runtime).

Ejemplo

El ejemplo siguiente genera la advertencia 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
}