noreturn
Section spécifique à Microsoft
Cet attribut __declspec indique au compilateur qu'une fonction ne retourne pas. Par conséquent, le compilateur sait que le code qui suit un appel à une fonction __declspec(noreturn) est inaccessible.
Si le compilateur recherche une fonction avec un chemin d'accès au contrôle qui ne retourne pas de valeur, il génère un avertissement (C4715) ou le message d'erreur (C2202). Si le chemin d'accès au contrôle ne peut pas être atteint en raison d'une fonction qui ne retourne jamais, vous pouvez utiliser __declspec(noreturn) pour éviter cet avertissement ou cette erreur.
Notes
L'ajout de __declspec(noreturn) à une fonction censée retourner peut entraîner un comportement non défini.
Exemple
Dans l'exemple suivant, la clause else ne contient pas d'instruction return. La déclaration fatal en tant que __declspec(noreturn) évite une erreur ou un message d'avertissement.
// noreturn2.cpp
__declspec(noreturn) extern void fatal () {}
int main() {
if(1)
return 1;
else if(0)
return 0;
else
fatal();
}