noreturn
Microsoft-spezifisch
Das __declspec
Attribut teilt dem Compiler mit, dass eine Funktion nicht zurückgegeben wird. Der Compiler weiß dann, dass der Code nach einem Aufruf einer __declspec(noreturn)
Funktion nicht erreichbar ist.
Wenn der Compiler eine Funktion mit einem Kontrollpfad findet, die keinen Wert zurückgibt, wird eine Warnung (C4715) oder Fehlermeldung (C2202) generiert. Wenn der Steuerelementpfad aufgrund einer Funktion, die nie zurückgegeben wird, nicht erreicht werden kann, können Sie __declspec(noreturn)
diese Warnung oder diesen Fehler verhindern.
Hinweis
Das Hinzufügen __declspec(noreturn)
zu einer Funktion, die erwartet wird, kann zu einem nicht definierten Verhalten führen.
Beispiel
Im folgenden Beispiel wird aufgerufen, wenn das Argument isZeroOrPositive
negativ fatal
ist. Es gibt keine Rückgabe-Anweisung in diesem Steuerelementpfad, was zu warnungen C4715 führt, dass nicht alle Steuerelementpfade einen Wert zurückgeben. Das Deklarieren fatal
als __declspec(noreturn)
Entschärfung dieser Warnung, was wünschenswert ist, da es keinen Punkt gibt, da fatal()
das Programm beendet wird.
// noreturn2.cpp
#include <exception>
__declspec(noreturn) void fatal()
{
std::terminate();
}
int isZeroOrPositive(int val)
{
if (val == 0)
{
return 0;
}
else if (val > 0)
{
return 1;
}
// this function terminates if val is negative
fatal();
}
int main()
{
isZeroOrPositive(123);
}
Ende Microsoft-spezifisch
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für