noreturn
Específicos do Microsoft
Isso __declspec atributo informa ao compilador que uma função não retorna.Como conseqüência, o compilador sabe que o código que segue uma chamada para um __declspec(noreturn) função é inacessível.
Se o compilador encontra uma função com um caminho de controle que não retorna um valor, ele gera um aviso (C4715) ou a mensagem de erro (C2202).Se o caminho de controle não pode ser alcançado devido a uma função que nunca retorne, você pode usar __declspec(noreturn) para evitar que esse aviso ou erro.
Observação |
---|
Adicionando __declspec(noreturn) a uma função que deve retornar pode resultar em um comportamento indefinido. |
Exemplo
No exemplo a seguir, o else cláusula não contém uma instrução return.Declarando fatal como __declspec(noreturn) evita um erro ou mensagem de aviso.
// noreturn2.cpp
__declspec(noreturn) extern void fatal () {}
int main() {
if(1)
return 1;
else if(0)
return 0;
else
fatal();
}