Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft-spezifisch
Ein erweitertes __declspec-Attribut, das in der Deklaration von Funktionen verwendet werden kann.
Syntax
Rückgabetyp
__declspec(nothrow)[Anrufkonvention] funktionsname ([argument-list])
Hinweise
Es wird empfohlen, dass der gesamte neue Code den noexcept-Operator anstelle von __declspec(nothrow) verwendet.
Dieses Attribut weist den Compiler an, dass die deklarierte Funktion und die Funktionen, die aufgerufen werden, nie eine Ausnahme auslösen. Er erzwingt jedoch nicht die Direktive. Mit anderen Worten, es wird std::terminate niemals aufgerufen, anders als noexcept, oder im /std:c++17-Modus (Visual Studio 2017, Version 15.5 und höher), throw().
Mit dem Modell für synchrone Ausnahmebehandlung kann der Compiler nun standardmäßig die Mechanismen der Lebensdauerverfolgung gewisser entladbarer Objekte in einer solchen Funktion eliminieren, wodurch die Codegröße erheblich reduziert wird. Angesichts der folgenden Präprozessordirektive sind die folgenden drei Funktionsdeklarationen im /std:c++14-Modus gleichwertig:
#define WINAPI __declspec(nothrow) __stdcall
void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();
Im /std:c++17-Modus entspricht throw() nicht den anderen, die __declspec(nothrow) verwenden, da std::terminate aufgerufen wird, wenn eine Ausnahme von der Funktion ausgelöst wird.
Die void __stdcall f3() throw();-Deklaration verwendet die vom C++-Standard definierte Syntax. In C++17 war das throw()-Schlüsselwort veraltet.
Ende Microsoft-spezifisch