11.17 Rückgabewert beim Beenden eines Programms
 
Über dieses Thema wurden bereits ganze Threads in diversen Foren gefüllt. Generell ist dieser Wert abhängig von der Umgebung des Betriebssystems. Unter Linux/UNIX bspw. bedeutet ein Rückgabewert von 0, dass ein Programm erfolgreich beendet wurde, alles andere bedeutet eben, dass irgendetwas schiefgelaufen ist.
Andere Betriebssysteme wiederum können allerdings auch einen anderen Rückgabewert als erfolgreiche Beendigung erwarten – was bedeutet, dass es hierbei keinen portablen Standard gibt.
Dennoch gibt es einen recht zuverlässigen Weg mit den Makros EXIT_SUCCESS und EXIT_FAILURE, um ein Programm zu beenden. Beide Makros sind in der Headerdatei <stdlib.h> definiert und schon seit dem C89-Standard vorhanden. Damit müssen Sie sich nicht mehr darum kümmern, welchen Wert auf welchem System Sie denn nun zurückgeben müssen, ob sich eine Anwendung erfolgreich oder eben nicht erfolgreich beendet hat. Bei einem erfolgreichen Ende geben Sie einfach EXIT_SUCCESS und bei einem Fehler EXIT_FAILURE zurück. Natürlich müssen Sie auch die Headerdatei <stdlib.h> mit einbinden.
Hierzu ein Beispiel, wie Sie diese beiden Makros sinnvoll einsetzen können:
/* exit_code.c */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int val, ret;
printf("Bitte Eingabe machen : ");
ret = scanf("%d", &val);
if(ret != 1) {
printf("Fehler bei scanf()-Eingabe\n");
return EXIT_FAILURE;
}
if(val < 0) {
printf("Fehler – Negative Zahl\n");
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Hinweis Von nun an sollen auch in den folgenden Listings die entsprechenden EXIT_-Makros verwendet werden.
|
|