Especificador de función _Noreturn
Especifica que la función no retorna a su punto de invocación.
Sintaxis
_Noreturn declaración_de_funcion
|
(desde C11) | ||||||||
Explicación
El término clave _Noreturn aparece en una declaración de función y especifica que la función no retorna ejecutando la declaración de retorno o llegando al final del cuerpo de la función (puede retornar ejecutando longjmp). Si la función declarada _Noreturn retorna, el comportamiento es indefinido. Se recomienda hacer un diagnóstico del compilador si se puede detectar.
El especificador _Noreturn puede aparecer más de una vez en la misma declaración de función, el comportamiento es el mismo que si apareciera una vez.
Este especificador se utiliza normalmente a través de la macro de conveniencia noreturn, que se proporciona en el encabezado stdnoreturn.h
Terminos clave
Biblioteca estándar
Las siguientes funciones de la biblioteca estándar son noreturn:
Ejemplo
#include <stdlib.h>
#include <stdio.h>
#include <stdnoreturn.h>
// causa un comportamiento indefinido si i <= 0
// se cierra si i > 0
noreturn void stop_now(int i) // o alternativamente _Noreturn void stop_now(int i)
{
if (i > 0) exit(i);
}
int main(void)
{
puts("Preparandose para detenerse...");
stop_now(2);
puts("Este código nunca se ejecutará.");
}
Salida:
Preparandose para detenerse...
Referencias
- Standard C11 (ISO/IEC 9899:2011):
- 6.7.4 Function specifiers (p: 125-127)
- 7.23 _Noreturn <stdnoreturn.h> (p: 361)
Véase también
Documentación de C++ para
[[noreturn]] |