Espacios de nombres
Variantes
Acciones

Especificador de función _Noreturn

De cppreference.com
< c‎ | language

Especifica que la función no retorna a su punto de invocación.

Contenido

[editar] Sintaxis

_Noreturn declaración_de_funcion (desde C11)

[editar] 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

[editar] Terminos clave

_Noreturn

[editar] Biblioteca estándar

Las siguientes funciones de la biblioteca estándar son noreturn:

  • abort()
  • exit()
  • _Exit()
  • quick_exit()
  • thrd_exit()
  • longjmp()

[editar] 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...

[editar] Referencias

  • Standard C11 (ISO/IEC 9899:2011):
  • 6.7.4 Function specifiers (p: 125-127)
  • 7.23 _Noreturn <stdnoreturn.h> (p: 361)

[editar] Véase también

Documentación de C++ para [[noreturn]]