noreturn
Sezione specifica Microsoft
Questo attributo __declspec indica al compilatore che la funzione non restituisce un valore. Di conseguenza, per il compilatore è evidente che il codice che segue una chiamata a una funzione __declspec(noreturn) non è eseguibile.
Se il compilatore rileva una funzione con un percorso di controllo che non restituisce un valore, viene generato un avviso (C4715) o un messaggio di errore (C2202). Se il percorso di controllo non può essere raggiunto a causa di una funzione che non restituisce mai un valore, è possibile utilizzare __declspec(noreturn) per evitare il messaggio di errore o l'avviso.
Nota
L'aggiunta di __declspec(noreturn) a una funzione che si prevede restituisca un valore può determinare un comportamento indefinito.
Esempio
Nell'esempio seguente, la clausola else non contiene un'istruzione return. Dichiarare fatal come __declspec(noreturn) consente di evitare il messaggio di errore o l'avviso.
// noreturn2.cpp
__declspec(noreturn) extern void fatal () {}
int main() {
if(1)
return 1;
else if(0)
return 0;
else
fatal();
}