_Noreturn function specifier (since C11) (deprecated in C23)
Spécifie que la fonction ne retourne pas à son point d'invocation.
Table des matières |
Syntaxe
| _Noreturn déclaration_de_fonction | (depuis C11) (obsolète en C23) | ||||||||
Explication
Le mot-clé
_Noreturn
apparaît dans une déclaration de fonction et spécifie que la fonction ne retourne pas en exécutant l'instruction return ou en atteignant la fin du corps de la fonction (elle peut retourner en exécutant
longjmp
). Si la fonction déclarée
_Noreturn
retourne, le comportement est indéfini. Un diagnostic du compilateur est recommandé si cela peut être détecté.
Le spécificateur
_Noreturn
peut apparaître plusieurs fois dans la même déclaration de fonction, le comportement est le même que s'il apparaissait une seule fois.
Ce spécificateur est généralement utilisé via la macro de commodité
noreturn
, qui est fournie dans l'en-tête
<stdnoreturn.h>
.
|
La macro
|
(depuis C23) |
Mots-clés
Bibliothèque standard
Les fonctions suivantes sont
noreturn
dans la bibliothèque standard :
Exemple
#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."); }
Sortie :
Preparing to exit...
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 6.7.4 Spécificateurs de fonction (p: TBD)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 6.7.4 Spécificateurs de fonction (p: 90-91)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: 263)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 6.7.4 Spécificateurs de fonction (p: 125-127)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: 361)
Voir aussi
|
indique que la fonction ne retourne pas
(spécificateur d'attribut) |
|
|
Documentation C++
pour
[[noreturn]]
|
|