Heim >Backend-Entwicklung >C++ >Ist „main()' wirklich der erste Code, der in einem C-Programm ausgeführt wird?
Ist Main() wirklich die Initiierung eines C-Programms?
Der C-Standard definiert main() als ausschließlichen Ausgangspunkt von a Programm: „Ein Programm soll eine globale Funktion namens main enthalten, die den vorgesehenen Start des Programms darstellt.“
Der folgende Code scheint dem jedoch zu widersprechen Definition:
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; }
Überraschenderweise führt dieser Code die Funktion user_main() aus, bevor er main() eingibt, das der anfängliche Ausführungspunkt sein soll. Darüber hinaus lässt sich der Code ohne Fehler oder Warnungen kompilieren.
Den „Start“ eines Programms definieren
Es ist wichtig, den Begriff „Start des Programms“ richtig zu interpretieren. Der Standard definiert den Start als den Punkt, an dem das Programm als beginnend betrachtet wird, nicht unbedingt, wenn der erste Code ausgeführt wird.
In diesem Beispiel beginnt das Programm mit main(), aber das bedeutet nicht, dass kein Code vorhanden ist wird vorher ausgeführt. In der Realität wird in der Regel umfangreicher Code vor main() ausgeführt, insbesondere während der Initialisierung.
Standardkonformität
Trotz der ungewöhnlichen Ausführungsreihenfolge des Codes hält er sich vollständig an die Standard. Laut Definition ist der Start des Programms main(), auch wenn user_main() früher ausgeführt wird. Die Ausführungsreihenfolge ändert nichts an der Tatsache, dass der Programmanfang als Funktion main() definiert ist.
Daher ist der angegebene Code Standard-konform und macht die Standarddefinition des Starts von nicht ungültig das Programm als main().
Das obige ist der detaillierte Inhalt vonIst „main()' wirklich der erste Code, der in einem C-Programm ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!