2013-06-27 59 views
10

我聽說在C中,main()是可重入的,而在C++中不是。main()函數是否可重入?

這是真的嗎?重新進入main()函數的場景是什麼?

+7

我不認爲你的意思是[reentrant](http://en.wikipedia.org/wiki/Reentrancy_(計算))。不過,你可以在C中調用'main'並且不允許用C++調用它。 –

回答

16

早期的C++實現是基於C語言的翻譯,通過在main開頭增加一個函數調用來實現全局構造函數。在這種實施情況下,再次撥打main將重新運行全球計算機,導致嚴重破壞,因此簡單地禁止這樣做。

另一方面,C沒有理由禁止撥打main,而且它始終是傳統的可能。

至於什麼時候有用,我會說「很少」。我見過的大多數程序名爲main的程序都是IOCCC條目。