11.16 Die Hauptfunktion main()
 
Gemäß dem ANSI C-Standard muss mindestens eine Funktion in einem Programm den Namen main() besitzen. Diese Funktion ist auch die erste, die beim Programmstart ausgeführt wird.
Geben Sie der main()-Funktion einen anderen Rückgabewert als int, könnte ein C99-Standard-konformer Compiler ein undefiniertes Verhalten zeigen. In einigen (vorwiegend älteren) Büchern finden Sie die main()-Funktion mitunter in folgender Schreibweise:
void main(void) {
}
Nach dem älteren C89-Standard ist dies auch richtig. Läuft ein Compiler aber nach dem C99-Standard, sollte dann eine Warnung ausgegeben werden, dass die main()-Funktion einen Rückgabewert erwartet.
Die main()-Funktion lautet (nach C99) richtig:
int main(void) {
return 0;
}
Weiterhin ist auch eine Variante mit zwei Parametern erlaubt:
int main(int argc, char **argv) {
return 0;
}
Näheres zu dieser Schreibweise erfahren Sie ein paar Kapitel später.
Der Rückgabewert, der der main()-Funktion zugewiesen wird, dient dazu, dass der Startup-Code dem Betriebssystem und der Umgebung mitteilt, ob das Programm ordnungsgemäß beendet wurde oder nicht (abhängig vom Rückgabewert).
In folgenden Fällen liegt ein undefiniertes Verhalten beim Beenden der main()-Funktion vor:
|
Kein Rückgabewert bei Verwendung von void main() |
|
Aufruf in main() von return ohne Wertangabe |
|
Verwendung von _exit() im Programm |
Wichtig ist in diesem Zusammenhang die Bedeutung des Begriffs »Startup-Code«. Der Startup-Code wird zu Beginn des Prozesses erzeugt (meist in Assembler) und dient der Beendigung eines Prozesses. Bei Beendigung der main()-Funktion mittels return 0 wird wieder zum Startup-Code zurückgesprungen. Er ruft dann die exit()-Funktion auf. Die exit()-Funktion führt dann noch einige Aufräumarbeiten aus (z.B. Freigabe des Speicherplatzes von benutzten Variablen des Programms). Zuletzt wird der Prozess mit der Funktion _exit() endgültig beendet. Hier eine bildliche Darstellung des Programmablaufs bei Beendigung des Programms:
 Hier klicken, um das Bild zu Vergrößern
Abbildung 11.3
Vom Start bis zum Ende eines Programms
Hinweis Ein Prozess ist ein Programm während seiner Ausführung.
|
|