Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Klíčové _Noreturn slovo bylo zavedeno v C11. Říká kompilátoru, že funkce, na kterou se použije, se nevrátí do volajícího. Kompilátor ví, že kód následující volání _Noreturn funkce je nedostupný. Příkladem funkce, která nevrací, je přerušení. Pokud je možné, aby se tok řízení vrátil volajícímu, funkce nesmí mít _Noreturn atribut.
Klíčové slovo se obvykle používá prostřednictvím pohodlného makra , noreturnzadaného v <stdnoreturn.h>, který se mapuje na _Noreturn klíčové slovo.
Hlavními výhodami pro použití _Noreturn (nebo ekvivalent noreturn) je záměr funkce jasně v kódu pro budoucí čtenáře a zjištění neúmyslně nedostupného kódu.
Funkce označená noreturn by neměla obsahovat návratový typ, protože nevrací hodnotu volajícímu. Měla by mít hodnotu void.
Příklad použití noreturn makra a _Noreturn klíčového slova
Následující příklad ukazuje _Noreturn klíčové slovo a ekvivalentní noreturn makro.
IntelliSense může vygenerovat nechutnou chybu, E0065pokud použijete makro noreturn , které můžete ignorovat. Nezabrání vám spustit ukázku.
// Compile with Warning Level4 (/W4) and /std:c11
#include <stdio.h>
#include <stdlib.h>
#include <stdnoreturn.h>
noreturn void fatal_error(void)
{
exit(3);
}
_Noreturn void not_coming_back(void)
{
puts("There's no coming back");
fatal_error();
return; // warning C4645 - function declared with noreturn has a return statement
}
void done(void)
{
puts("We'll never get here");
}
int main(void)
{
not_coming_back();
done(); // warning c4702 - unreachable code
return 0;
}
Požadavky
| Makro | Požadovaný hlavičkový soubor |
|---|---|
noreturn |
<stdnoreturn.h> |
Viz také
/std (určení standardní verze jazyka)
/W4 (určení úrovně upozornění)
Upozornění C4702
__declspec(noreturn)