_Noreturn function specifier (since C11) (deprecated in C23)
Especifica que la función no retorna a su punto de invocación.
Contenidos |
Sintaxis
| _Noreturn declaración_de_función | (desde C11) (obsoleto en C23) | ||||||||
Explicación
La palabra clave
_Noreturn
aparece en una declaración de función y especifica que la función no retorna mediante la ejecución de la sentencia return o al alcanzar el final del cuerpo de la función (puede retornar ejecutando
longjmp
). Si la función declarada como
_Noreturn
retorna, el comportamiento es indefinido. Se recomienda un diagnóstico del compilador si esto puede detectarse.
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 típicamente a través de la macro de conveniencia
noreturn
, que se proporciona en el encabezado
<stdnoreturn.h>
.
|
La macro
|
(desde C23) |
Palabras clave
Biblioteca estándar
Las siguientes funciones son
noreturn
en la biblioteca estándar:
Ejemplo
#include <stdio.h> #include <stdlib.h> #include <stdnoreturn.h> // causes undefined behavior if i <= 0 // exits if i > 0 noreturn void exit_now(int i) // or _Noreturn void exit_now(int i) { if (i > 0) exit(i); } int main(void) { puts("Preparing to exit..."); exit_now(2); puts("This code is never executed."); }
Salida:
Preparing to exit...
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 6.7.4 Especificadores de función (p: TBD)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 6.7.4 Especificadores de función (p: 90-91)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: 263)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 6.7.4 Especificadores de función (p: 125-127)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: 361)
Véase también
|
indica que la función no retorna
(especificador de atributo) |
|
|
documentación de C++
para
[[noreturn]]
|
|