Seite 1 von 1

Frage zu return 0

Verfasst: Mo Apr 29, 2013 2:17 pm
von gizno82
Hallo ich hab mal ne Frage zum Rückgabewert der main Funktion, hab das ganze so gelernt: (wenn man das Program ohne parameter aufrufen möchte.)

Code: Alles auswählen

int main(void)
{
    .
    .
    .
    return 0;
}
Die 0 ist doch der Rückgabewert der Main Funktion und meldet dem Betriebssystem dass das Programm erfolgreich beendet wurde.
ist das korrekt ?

Es gibt auch c compiler die so was hier unterstützen:

Code: Alles auswählen

main ()
{
    .
    .
    .
}
Was zwar funktionieren mag, aber kein schöner Stil ist.
ist die zweite variante überhaupt standart konform ?
Seit warum kommt die main Fuktion ohne Rückgabewert aus ?

Es geht darum, dass jemand ein c - skript geschrieben hat und zwar mit der zweiten main version, diese Person möchte das für den Unterricht verwenden und ich halte das für grob fahrlässig. Hab noch keinen professionellen Programmierer gesehen der die zweite main variante nutzt und so etwas sollte man auch niemand beibringen.
Liege ich richtig ist die erste variante standart und die zweite nicht was spricht gegen die zweite variante (welche ist empfehlenswert) ?

danke für eure erläuterungen

viele Grüße

Gizno

Edit by Xin: Code-Tags hinzugefügt

Re: Frage zu return 0

Verfasst: Mo Apr 29, 2013 2:51 pm
von Xin
gizno82 hat geschrieben:Die 0 ist doch der Rückgabewert der Main Funktion und meldet dem Betriebssystem dass das Programm erfolgreich beendet wurde.
ist das korrekt ?
Ist korrekt.
gizno82 hat geschrieben: Es gibt auch c compiler die so was hier unterstützen: "main () ..."

Was zwar funktionieren mag, aber kein schöner Stil ist.
ist die zweite variante überhaupt standart konform ?
Seit warum kommt die main Fuktion ohne Rückgabewert aus ?
Der Standard wird im Deutsch-Standard mit 'd' geschrieben und der C-Standard ist an der Stelle nicht unbedingt logisch.

main() {} ist alter Kerningham-Ritchie-Stil...

Der Standard geht da auf den alten Stil teilweise(!) noch ein.
main() muss int zurückgeben, das entspricht neben "int main()" aber in C eben auch "main()" und man darf "return rc;" weglassen, dann wird 0 zurückgegeben.

Das ist eine Ausnahme im Standard und halt eben eigentlich unlogisch.
gizno82 hat geschrieben:Es geht darum, dass jemand ein c - skript geschrieben hat und zwar mit der zweiten main version, diese Person möchte das für den Unterricht verwenden und ich halte das für grob fahrlässig. Hab noch keinen professionellen Programmierer gesehen der die zweite main variante nutzt und so etwas sollte man auch niemand beibringen.
Liege ich richtig ist die erste variante standart und die zweite nicht was spricht gegen die zweite variante (welche ist empfehlenswert) ?
Die erste Variante ist definitiv empfehlenswert, die zweite ist aber nicht falsch, weil es hierfür eine Ausnahme im Standard gibt.

Mit über 20 Jahren Programmiererfahrung in C empfehle ich deutlich Variante mit "int main() { ... return EXIT_SUCCESS; }".
Ausnahmen sollte man möglichst meiden. Das "void" in den Klammern ist optional und wird heute in der Regel weggelassen.

Re: Frage zu return 0

Verfasst: Mo Apr 29, 2013 3:56 pm
von gizno82
Danke Xin für die ausführliche Antwort.

Re: Frage zu return 0

Verfasst: Mo Apr 29, 2013 4:00 pm
von nufan