2013-06-27 21 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条目。