Heim  >  Artikel  >  Backend-Entwicklung  >  Ist die Rekursion in „main()“ in C zulässig?

Ist die Rekursion in „main()“ in C zulässig?

DDD
DDDOriginal
2024-11-18 20:13:02535Durchsuche

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

Rekursivität in main() in C: Legal oder nicht?

Ein häufiges Missverständnis in Bezug auf C ist die Rechtmäßigkeit der Rekursion in main( ) Funktion. Auch wenn es intuitiv erscheinen mag, dass eine solche Praxis verboten ist, hat der Compiler oft keine Einwände gegen solchen Code. Um dieses Problem zu klären, werfen wir einen Blick auf die Feinheiten des C-Standards.

Gemäß dem C-Standard (3.6.1/3) ist eine Rekursion in main() nicht zulässig. Im Standard heißt es ausdrücklich: „Die Funktion main darf nicht innerhalb eines Programms verwendet werden.“ In diesem Zusammenhang impliziert „verwendet“, dass auf die Funktion in einem potenziell ausgewerteten Ausdruck verwiesen wird.

Daher verstößt der folgende Code gegen den C-Standard:

int main()
{
    main();
}

Trotzdem Aufgrund des Verbots geben einige Compiler möglicherweise keinen Fehler aus, wenn sie auf solchen Code stoßen. Dies könnte Entwickler zu der Annahme verleiten, dass die Rekursion in main() legal ist, es ist jedoch wichtig zu beachten, dass dieses Verhalten fehlerhaft ist. Das Vertrauen auf die Akzeptanz des Compilers sollte nicht die Einhaltung des Standards ersetzen.

Zusammenfassend lässt sich sagen, dass die Rekursion in main() gemäß dem C-Standard illegal ist. Obwohl Compiler diese Regel möglicherweise nicht immer durchsetzen, sollten sich Entwickler der Anforderungen des Standards bewusst sein und diese Praxis in ihrem Code vermeiden.

Das obige ist der detaillierte Inhalt vonIst die Rekursion in „main()“ in C zulässig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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