Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
throwing "type": typ z __clrcall destruktorem lub konstruktorem kopiowania można przechwycić tylko w /clr:pure module
Uwagi
Opcja /clr:pure compiler jest przestarzała w programie Visual Studio 2015 i nieobsługiwana w programie Visual Studio 2017.
Podczas kompilowania z /clr (nie /clr:pure), obsługa wyjątków oczekuje, że funkcje składowe w typie natywnym będą __cdecl, a nie __clrcall. Typy natywne z funkcjami składowymi przy użyciu konwencji wywoływania nie mogą być przechwytywane w module skompilowanym za pomocą __clrcall/clr.
Jeśli wyjątek zostanie przechwycony w module skompilowanym za pomocą polecenia /clr:pure, możesz zignorować to ostrzeżenie.
Aby uzyskać więcej informacji, zobacz /clr (kompilacja środowiska uruchomieniowego języka wspólnego).
Przykład
Poniższy przykład generuje kod 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
}