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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro