noreturn

Específicos de Microsoft

El __declspec atributo indica al compilador que una función no devuelve. A continuación, el compilador sabe que el código que sigue a una llamada a una __declspec(noreturn) función no es accesible.

Si el compilador encuentra una función con una ruta de acceso de control que no devuelve un valor, genera una advertencia (C4715) o un mensaje de error (C2202). Si no se puede acceder a la ruta de acceso del control debido a una función que nunca devuelve, use __declspec(noreturn) para evitar esta advertencia o error.

Nota:

La adición de __declspec(noreturn) a una función que se espera que devuelva resultados puede dar lugar a un comportamiento indefinido.

Ejemplo

En el ejemplo siguiente, cuando se llama al argumento para isZeroOrPositive es negativo fatal . No hay ninguna instrucción return en esa ruta de acceso de control, lo que genera una advertencia C4715 que no todas las rutas de acceso de control devuelven un valor. fatal Declarar como __declspec(noreturn) mitiga esa advertencia, que es deseable porque no hay ningún punto en él, ya fatal() que finaliza el programa.

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

FIN de Específicos de Microsoft

Consulte también

__declspec
Palabras clave