Heim >Backend-Entwicklung >C++ >Markiert „main()' wirklich den absoluten Anfang eines C-Programms?
Die falsche Vorstellung von Main() als dem absoluten Start in C
Entgegen der landläufigen Meinung ist der C-Standard in Abschnitt $3.6.1/ 1 bedeutet mit der Aussage „Ein Programm soll eine globale Funktion namens main enthalten, die den festgelegten Start des Programms darstellt“ nicht, dass der Ausführung von kein Code vorausgeht hauptsächlich(). Stattdessen wird das Konzept „Start“ als ein bestimmter Punkt innerhalb des Programms etabliert.
Um diese Unterscheidung zu veranschaulichen, betrachten Sie den folgenden Codeausschnitt:
int square(int i) { return i*i; } int user_main() { for ( int i = 0 ; i < 10 ; ++i ) std::cout << square(i) << endl; return 0; } int main_ret= user_main(); int main() { return main_ret; }
Dieser Code initialisiert die globale Variable main_ret, indem Sie user_main() ausführen, bevor Sie die Funktion main() aufrufen. Trotz dieser Ausführungsreihenfolge gilt user_main() nicht als der wahre „Start“ des Programms im Sinne des Standards.
Definition von „Start“ im C-Standard
Der Knackpunkt liegt in der Interpretation von „Start“. Der Standard bezeichnet main() als den „designierten Start“ des Programms und definiert „Start“ effektiv als den Punkt, an dem main() aufgerufen wird. Es verbietet jedoch nicht die Ausführung von Code vor dieser Bezeichnung.
Auswirkungen auf die Code-Compliance
In Anbetracht dieser Interpretation ist das angegebene Code-Snippet vollständig konform mit der C-Standard. Auch wenn user_main() vor main() ausgeführt wird, bleibt der „Start“ des Programms an der Stelle, an der main() aufgerufen wird.
Fazit
Auch wenn es den Anschein hat Obwohl es intuitiv ist, dass main() der absolute Anfang eines C-Programms sein sollte, verwendet der Standard eine andere Definition. Es legt main() als den festgelegten Punkt fest, an dem das Programm zum Zweck seiner weiteren Ausführung und Spezifikation „startet“.
Das obige ist der detaillierte Inhalt vonMarkiert „main()' wirklich den absoluten Anfang eines C-Programms?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!