noreturn
Específicos de Microsoft
Este atributo __declspec indica al compilador que una función no devuelve resultados. Como consecuencia, el compilador sabe que no se puede tener acceso al código que sigue a una llamada a una función __declspec(noreturn).
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 tener acceso a la ruta de acceso de control debido a una función que nunca devuelve resultados, puede utilizar __declspec(noreturn) para evitar esta advertencia o este 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, la cláusula else no contiene una instrucción return. La declaración de fatal como __declspec(noreturn) evita un mensaje de error o de advertencia.
// noreturn2.cpp
__declspec(noreturn) extern void fatal () {}
int main() {
if(1)
return 1;
else if(0)
return 0;
else
fatal();
}