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