Udo Scharnitzki wrote:
>
> Warum muss die main-Funktion mit Typ integer deklariert werden? Sie ist
> doch void. Es gibt doch gar keinen Return?!
Du musst über den Tellerrand schauen.
C wird auf einer Unmenge an Plattformen eingesetzt. Die meisten davon
haben ein Betriebssystem.
main() ist der Einsprungspunkt in ein Programm, also letztendlich die
Schnittstelle, die dein Programm nach aussen hat. Daher ist main auch
die einzige Funktion, deren mögliche Argumente bzw. Rückgabewert genormt
sein müssen, damit Betriebssystembauer sich danach richten können, dass
das immer gleich ist. Und damit das auch so ist, ist in der
Sprachdefinition eindeutig festgelegt, welche Möglichkeiten es dafür
gibt.
Und in der Sprachdefinition wurde festgelegt, das main() einen int zu
retournieren hat.
PS: main() ist nicht die erste Funktionalität, die von deinem Programm
ausgeführt wird. Jedes C Programm führt vor main() noch den Startup-Code
aus, der die Umgebung einrichtet, damit main() loslegen kann. Erst
nachdem dieser durchlaufen wurde, wird deine main() Funktion aufgerufen.
Dieser Startup Code erwartet aber, das main(), sollte es zurückkommen,
einen int als Returnwert liefert. Jenachdem wie clever der Compilerbauer
das eingerichtet hat, kann das auch gutgehen wenn du main als void
Funktion baust. Kann - muss aber nicht.