Heim > Backend-Entwicklung > C++ > Ist eine Rekursion in „main()' in C zulässig?

Ist eine Rekursion in „main()' in C zulässig?

Patricia Arquette
Freigeben: 2024-11-28 19:16:15
Original
162 Leute haben es durchsucht

Is Recursion into `main()` Allowed in C  ?

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();
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage