Avviso del compilatore (livello 1) C4382
throwing 'type': un tipo con __clrcall distruttore o costruttore di copia può essere intercettato solo in /clr:pure module
Osservazioni:
L'opzione del compilatore /clr:pure è deprecata in Visual Studio 2015 e non supportata in Visual Studio 2017.
Quando viene compilato con /clr (non /clr:pure), la gestione delle eccezioni prevede che le funzioni membro in un tipo nativo siano __cdecl e non __clrcall. I tipi nativi con funzioni membro che usano __clrcall
la convenzione di chiamata non possono essere rilevati in un modulo compilato con /clr.
Se l'eccezione verrà intercettata in un modulo compilato con /clr:pure, è possibile ignorare questo avviso.
Per altre informazioni, vedere /clr (Compilazione Common Language Runtime).
Esempio
L'esempio seguente genera l'errore 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
}