Condividi tramite


noreturn

Sezione specifica Microsoft

L'attributo __declspec indica al compilatore che una funzione non restituisce. Il compilatore sa quindi che il codice che segue una chiamata a una __declspec(noreturn) funzione non è raggiungibile.

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 non è possibile raggiungere il percorso del controllo a causa di una funzione che non viene mai restituita, utilizzare __declspec(noreturn) per evitare questo avviso o errore.

Nota

L'aggiunta __declspec(noreturn) a una funzione che dovrebbe restituire può comportare un comportamento non definito.

Esempio

Nell'esempio seguente, quando l'argomento per isZeroOrPositive è negativo, fatal viene chiamato . Non esiste un'istruzione return in tale percorso di controllo, che genera un avviso C4715 che non tutti i percorsi di controllo restituiscono un valore. fatal La dichiarazione come __declspec(noreturn) attenua l'avviso, che è auspicabile perché non vi è alcun punto in esso perché fatal() termina il programma.

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

Fine sezione specifica Microsoft

Vedi anche

__declspec
Parole chiave