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

__declspec
Schlüsselwörter