2013-06-27 9 views
10

Ich habe gehört, dass in C, main() ist einspringenden, während in C++ nicht ist.Ist die main() -Funktion einspringend?

Ist das wahr? In welchem ​​Szenario wird die main() -Funktion erneut aufgerufen?

+7

Ich glaube nicht, Sie [einspringenden] bedeuten (http://en.wikipedia.org/wiki/Reentrancy_ (Computing)). Es ist jedoch richtig, dass Sie 'main' in C aufrufen dürfen und Sie es nicht in C++ aufrufen dürfen. –

Antwort

16

Frühe C++ - Implementierungen, die auf der Übersetzung in C basierten, implementierten globale Konstruktoren durch Hinzufügen eines Funktionsaufrufs zum Anfang von main. Unter einer solchen Implementierung ruft main wieder würde die globalen ctors erneut ausführen, in Chaos führt, so war es einfach, dies zu tun verboten.

C auf der anderen Seite hatte keinen Grund, main zu verbieten nennen, und es war immer traditionell möglich.

Was, wenn es sinnvoll, würde ich sagen „selten“. Die meisten der Programme, die ich habe, die main waren IOCCC Einträge genannt gesehen.

Verwandte Themen