0 Tage Serie
c / expert
Snippet

Der _Noreturn Funktions-Spezifizierer

Das Schlüsselwort _Noreturn (C11) gibt an, dass eine Funktion nicht zu ihrem Aufrufer zurückkehrt, typischerweise weil sie das Programm beendet oder einen Long-Jump ausführt. Dies dient dem Compiler als Hinweis zur Optimierung, wodurch unnötiger Code nach dem Aufruf weggelassen werden kann und eine bessere statische Analyse des Kontrollflusses ermöglicht wird.

snippet.c
c
1
2
3
4
5
6
7
#include <stdlib.h>
#include <stdio.h>
_Noreturn void panic(const char *msg) {
fprintf(stderr, "FATAL: %s\n", msg);
abort();
}
Erklärung
1
_Noreturn void panic(const char *msg)
Gibt an, dass der Ausführungspfad der Funktion 'panic' niemals die Return-Anweisung erreicht.
2
abort();
Eine Standardbibliotheksfunktion, die den Prozess beendet und somit den _Noreturn-Vertrag erfüllt.