Warum funktioniert int main() {} kompilieren?
Bin(ich verwende Visual C++ 2008 -) ich habe immer gehört, dass main () erforderlich eine Ganzzahl zurückgegeben, aber hier habe ich gar nicht in return 0;
aus und es kompiliert mit 0 Fehlern und 0 Warnungen! In der debug-Fenster, sagt das Programm hat sich beendet mit code 0. Wenn diese Funktion heißt nichts anderes als main(), der compiler beschwert sich, die sagen, 'bla' muss einen Wert zurückgeben. Kleben ein return;
verursacht auch den Fehler angezeigt werden. Aber lassen Sie es vollständig, es stellt so gut.
#include <iostream>
using namespace std;
int main()
{
cout << "Hey look I'm supposed to return an int but I'm not gonna!\n";
}
Könnte das ein bug in VC++?
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen zu finden eine online-Kopie von der C++ - standard, also könnte ich zitieren diese passage Ich fand einen blog-post, dass Angebote alle die richtigen bits besser als ich es könnte.
void main(…)
ist definiert als OK (in C).Dies ist Teil der C++ - Sprachstandard. Ein impliziter return 0 generiert für Sie, wenn es gibt keine explizite return-Anweisung in main.
Ich bin mir ziemlich sicher, VC++, nur fügt eine 0 zurück, wenn Sie nicht über einen in den wichtigsten Funktionen. Das gleiche kann passieren, mit Funktionen, die auch, aber in diesen Fällen zumindest bekommst du eine Warnung.
Abschnitt 6.6.3/2-Staaten- "Fließt aus dem Ende einer Funktion ist äquivalent zu einem return ohne Wert; dies führt zu undefiniertem Verhalten in einer Wert-Rückkehr-Funktion.".
Ein Beispiel ist der folgende code, die am besten warnt auf VS 2010/g++
Also der springende Punkt ist, dass 'main' ist etwas besonderes, als die vorherigen Antworten haben darauf hingewiesen.