Warum sind rekursive Aufrufe von main () in C ++ nicht erlaubt? [Duplikat]

8
  

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?

    
gablin 16.03.2011, 14:08
quelle

2 Antworten

3

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.

    
user662630 16.03.2011 14:14
quelle
1

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.

    
Mark B 16.03.2011 14:14
quelle

Tags und Links