2013-06-27 16 views
10

私はCでmain()がリエントラントであると聞きましたが、C++ではそうではありません。main()関数はリエントラントですか?

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

+7

私はあなたが[リエントラント](http://en.wikipedia.org/wiki/Reentrancy_(計算))を意味するとは思わない。しかし、C言語で 'main'を呼び出すことが許されており、C++でそれを呼び出すことはできません。 –

答えて

16

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

Cは、mainを呼び出すことを禁じる理由はなく、常に伝統的に可能でした。

有用なときは「まれに」と言います。 mainと呼ばれるプログラムのほとんどはIOCCCのエントリでした。

関連する問題