Espacios de nombres
Variantes

Especificador de función _Noreturn

De cppreference.com
(Redirigido desde «c/language/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

_Noreturn

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