11

C では main() は再入可能ですが、C++ ではそうではないと聞きました。

これは本当ですか?main() 関数を再入力するシナリオは何ですか?

4

1 に答える 1

16

C への変換に基づいた初期の C++ 実装では、関数呼び出しを の先頭に追加することでグローバル コンストラクターを実装していましたmain。このような実装では、main再度呼び出すとグローバル ctor が再実行され、大混乱が生じるため、これを行うことは単純に禁止されていました。

一方、C では の呼び出しを禁止する理由はなくmain、伝統的に常に可能でした。

いつ役に立つかというと、「めったにない」ということです。私が見たプログラムのほとんどは、mainIOCCC エントリでした。

于 2013-06-27T03:07:33.400 に答える