Mögliche Duplikate:
Einschränkungen für die main () Funktion
Ist es legal, sich auf die Seite zu begeben? main () in C ++?
Ich habe in C ++ Primer gelesen, dass main
nicht rekursiv aufgerufen werden darf, und in einigen verwandten Fragen zu SO wird bestätigt, dass es illegal ist.
Aber warum ist das illegal? Solange Sie einen Stack-Überlauf vermeiden, was ist das Problem mit dem Aufruf von main
in sich selbst?
Nun, der Standard besagt:
3.6.1.3 "Die Funktion main darf nicht innerhalb eines Programms verwendet werden."
5.2.2.9 "Rekursive Aufrufe sind erlaubt, bis auf die Funktion main"
Ich denke, es ist eine Hauptsache () ist eine spezielle Funktion, die als Einstiegspunkt für das Programm verwendet wird. Ich würde sagen, halten Sie es speziell, nehmen Sie es nicht auf das Niveau einer normalen Funktion, weil es nicht ist.
Ich glaube, dass der Wortlaut in 3.6.1 / 3 dies verbietet und sagt, dass es nicht in einem Programm verwendet werden darf:
Die Funktion main darf nicht verwendet werden (3.2) innerhalb eines Programms. Die Verknüpfung (3.5) von Haupt ist Implementierung definiert. Ein Programm, das deklariert main als inline oder statisch ist illformiert. Der Name main ist nicht ansonsten reserviert. [Beispiel: Mitglied Funktionen, Klassen und Aufzählungen kann wie main aufgerufen werden, ebenso wie Entitäten in andere Namespaces. ]
Dann in 3.2 / 2
Ein Objekt oder nicht überladene Funktion ist Wird verwendet, wenn der Name in a erscheint potenziell ausgewerteter Ausdruck.
Dies zeigt deutlich, dass used mögliche Aufrufe (die rekursiv wären) zu main
enthält.