Share via


noreturn

Specifické pro Microsoft

Atribut __declspec říká kompilátoru, že funkce nevrací. Kompilátor pak ví, že kód následující volání __declspec(noreturn) funkce je nedostupný.

Pokud kompilátor najde funkci s cestou řízení, která nevrací hodnotu, vygeneruje upozornění (C4715) nebo chybovou zprávu (C2202). Pokud nelze dosáhnout cesty ovládacího prvku kvůli funkci, která se nikdy nevrátí, použijte __declspec(noreturn) k zabránění tomuto upozornění nebo chybě.

Poznámka:

Přidání __declspec(noreturn) do funkce, která se má vrátit, může mít za následek nedefinované chování.

Příklad

V následujícím příkladu je volána argument pro isZeroOrPositive zápornou fatal hodnotu. V této cestě ovládacího prvku neexistuje návratový příkaz, což vede k upozornění C4715, že ne všechny cesty ovládacích prvků vrací hodnotu. Deklarování fatal , jak __declspec(noreturn) se toto upozornění zmírní, což je žádoucí, protože od fatal() ukončení programu neexistuje žádný bod.

// 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);
}

END Microsoft Specific

Viz také

__declspec
Klíčová slova