|
Gibt man der main() - Funktion einen anderen Rückgabewert außer int,
könnte in C99-Standard Compiler ein undefiniertes Verhalten auftreten.
In vielen Büchern findet man die main() - Funktion in folgender Schreibweise
wieder...
void main()
{
...
}
Nach dem C89 - Standard ist dies auch richtig. Läuft ein Compiler
nach C99 Standard, wird eine Warnung ausgegeben, das die main()
Funktion einen Rückgabewert erwartet.
Die main()-Funktion lautet (nach C99) richtig.....
int main()
{
return 0;
}
...oder mit 2 Parametern...
int main(int argc, char **argv)
{
return 0;
}
Sollten sie der main()- Funktion einen anderen Rückgabetypen als
int übergeben ist das Verhalten undefiniert.
Der Rückgabewert an die main() - Funktion dient dafür das der StartUp-Code
dem Betriebssystem und der Umgebung mitteilt, das unser Programm ordentlich
beendet wurde.
Es gibt außerdem drei Kompatible Werte die sie der Funktion zurückgeben können...
return 0;
return EXIT_SUCCESS;
return EXIT_FAILURE;
Die letzten beiden Konstanten finden sie meist in der Headerdatei <stdlib.h>
Die Beendigung von der main() - Funktion mittels return 0 ist übrigens gleichwertig
mit exit. In folgenden Fällen liegt ein undefiniertes Verhalten beim Beenden der main ()
Funktion vor......
- Ohne Rückgabewert mit void main
- Aufruf in main von return (ohne Wertangabe)
- Aufruf von exit und _exit im Programm
Der Startup-Code wird zu Beginn des Prozesses erzeugt (meist in Assembler) und
dient zur Beendigung eines Prozesses.
Bei Beendigung der main()- Funktion mittels return 0 wird wieder zum StartUP-
Code zurückgesprungen. Der StartUp-Code ruft dann die exit-Funktion auf.
Die exit-Funktion führt dann noch einige Aufräumarbeiten durch. Als letztes
wird der Prozess mit der Funktion _exit() beendet. Wollen wir uns den Programmablauf
einmal Bildlich ansehen...
© 2001,2002 Jürgen Wolf
|