2012-11-24 10 views
6

In C++, 3.6.1 HauptfunktionKann ich Rückkehr von Haupt in C weglassen?

(3.6.1/5) in Haupt eine return-Anweisung hat die Wirkung der Hauptfunktion verlassen (alle Objekte mit automatischer Speicherdauer zu zerstören) und Austritt Aufruf mit der Rückgabewert als Argument. Wenn die Steuerung das Ende von main erreicht, ohne auf eine Rückgabeanweisung zu stoßen, ist der Effekt der von der Ausführung von return 0;

Kann ich Folgendes in C99 ohne Rückkehr 0 tun? wenn der Rückgabetyp von main

int main() { } 
+6

gibt Sie eine C++ haben Standard, aber kein C-Standard? –

+0

@CarlNorum: Kosten beide nicht Geld? – NPE

+0

@NPE: C99 Standard ist online frei verfügbar. Und mögliche Duplikate, die auch die Frage beantwortet: http://stackoverflow.com/q/204476/1202636 – effeffe

Antwort

11

Ja, wie der C99, am Ende der Haupt 0 zurück, die } erreicht, ist mit int kompatibel.

5.1.2.2.3 Programmabbruch

Wenn der Rückgabetyp der main Funktion mit int einen Typ kompatibel ist, eine Rückkehr aus dem ersten Aufruf die main Funktion entspricht die exit der Aufruf Funktion mit dem Wert, der von der main-Funktion als sein Argument zurückgegeben wird; 11) Das Erreichen der }, die die main-Funktion beendet, gibt den Wert 0 zurück. Wenn der Rückgabetyp nicht mit int kompatibel ist, ist der an die Hostumgebung zurückgegebene Beendigungsstatus nicht angegeben.

6

Ja, sagt der C99-Standard (§5.1.2.2.3):

die } erreicht, der die main Funktion beendet einen Wert von 0