_Noreturn function specifier (since C11) (deprecated in C23)
Gibt an, dass die Funktion nicht zu ihrem Aufrufpunkt zurückkehrt.
Inhaltsverzeichnis |
Syntax
| _Noreturn Funktionsdeklaration | (seit C11) (veraltet in C23) | ||||||||
Erklärung
Das
_Noreturn
Schlüsselwort erscheint in einer Funktionsdeklaration und spezifiziert, dass die Funktion nicht durch Ausführung der return-Anweisung oder durch Erreichen des Endes des Funktionsrumpfs zurückkehrt (sie kann durch Ausführung von
longjmp
zurückkehren). Wenn die als
_Noreturn
deklarierte Funktion zurückkehrt, ist das Verhalten undefiniert. Eine Compiler-Diagnose wird empfohlen, falls dies erkannt werden kann.
Der
_Noreturn
Spezifizierer kann mehr als einmal in derselben Funktionsdeklaration erscheinen, das Verhalten ist dasselbe, als ob er einmal erschienen wäre.
Dieser Spezifizierer wird typischerweise über das praktische Makro
noreturn
verwendet, das im Header
<stdnoreturn.h>
bereitgestellt wird.
|
Das Makro
|
(seit C23) |
Schlüsselwörter
Standardbibliothek
Die folgenden Funktionen sind
noreturn
in der Standardbibliothek:
Beispiel
#include <stdio.h> #include <stdlib.h> #include <stdnoreturn.h> // verursacht undefiniertes Verhalten wenn i <= 0 // beendet wenn 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."); }
Ausgabe:
Preparing to exit...
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 6.7.4 Funktionsspezifizierer (S.: TBD)
-
- 7.23 _Noreturn <stdnoreturn.h> (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 6.7.4 Funktionsspezifizierer (S: 90-91)
-
- 7.23 _Noreturn <stdnoreturn.h> (S: 263)
- C11-Standard (ISO/IEC 9899:2011):
-
- 6.7.4 Funktionsspezifizierer (S: 125-127)
-
- 7.23 _Noreturn <stdnoreturn.h> (S: 361)
Siehe auch
|
gibt an, dass die Funktion nicht zurückkehrt
(Attributspezifizierer) |
|
|
C++-Dokumentation
für
[[noreturn]]
|
|