Heim > Backend-Entwicklung > C++ > Kann die Funktion „main()' von C rekursiv sein?

Kann die Funktion „main()' von C rekursiv sein?

Linda Hamilton
Freigeben: 2024-11-28 22:54:14
Original
244 Leute haben es durchsucht

Can C  's `main()` Function Be Recursive?

Rekursivitätseinschränkungen in der main()-Funktion von C

In C wurde die Verwendung der Rekursion innerhalb der main()-Funktion a Gegenstand der Debatte. Zahlreiche Entwickler haben beobachtet, dass die GNU Compiler Collection (g) trotz des angeblichen Verbots im C-Standard eine Rekursion in main() zulässt.

Standardeinschränkungen

Gemäß der C-Standard (3.6.1/3), Rekursion in main() ist ausdrücklich verboten:

"Die Funktion main darf nicht verwendet werden (3.2) innerhalb eines Programms.“

Definition von „Verwendet“

Der Standard definiert „verwendet“ auch als Objekt oder nicht überladene Funktion:

"Ein Objekt oder eine nicht überladene Funktion wird verwendet, wenn ihr Name in einem potenziell ausgewerteten Element erscheint Ausdruck.“

Daher stellt der Aufruf von main() aus sich selbst eine „Verwendung“ dar und ist daher gemäß dem Standard nicht zulässig.

Compilerverhalten

Trotz des Verbots des Standards kompiliert g den folgenden Code ohne Fehler:

int main()
{
    main();
}
Nach dem Login kopieren

Diese Diskrepanz entsteht, weil die Standardoptimierungsstufe von g Inlining-Funktionen umfasst, die kleiner als ein vorkonfigurierter Schwellenwert sind. Da es sich bei der Rekursion in diesem Code um einen einzelnen Funktionsaufruf handelt, fällt sie wahrscheinlich unter den Schwellenwert und wird von g eingebunden.

Schlussfolgerung

Während g möglicherweise eine Rekursion in main zulässt () In einigen Fällen verbietet der C-Standard dies strengstens. Entwickler sollten sich an die Anforderungen des Standards halten, um die Korrektheit des Programms und mögliche Fallstricke sicherzustellen.

Das obige ist der detaillierte Inhalt vonKann die Funktion „main()' von C rekursiv sein?. 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