Rekursion in main() in C: Ist das zulässig?
Trotz der Vorstellung, dass C eine Rekursion in main() verbietet, gibt es Es gibt Fälle, in denen Code wie der folgende mit g fehlerfrei kompiliert wird:
int main() { main(); }
Das wirft die Frage auf: Funktioniert das C Standard erlaubt eine solche Rekursion?
Antwort:
Der C-Standard verbietet ausdrücklich die Rekursion in main() in Abschnitt 3.6.1/3, in dem es heißt: „Die Funktion main darf nicht innerhalb eines Programms verwendet werden.“ In diesem Zusammenhang bezieht sich „verwendet“ auf Situationen, in denen „sein Name in einem potenziell ausgewerteten Ausdruck erscheint“.
Daher sind rekursive Aufrufe von main() in C-Programmen nicht zulässig. Die Fähigkeit des Compilers, den bereitgestellten Code fehlerfrei zu kompilieren, ist wahrscheinlich auf implementierte spezifische Optimierungen oder eine Lücke in der Interpretation des Standards zurückzuführen. Es wird jedoch nicht empfohlen, sich auf ein solches Verhalten zu verlassen, da es gegen das ausdrückliche Verbot in der Sprachspezifikation verstößt.
Das obige ist der detaillierte Inhalt vonIst eine Rekursion in „main()' in C zulässig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!