【问题标题】:Is the main() function re-entrant?main() 函数是可重入的吗?
【发布时间】:2013-06-24 09:43:53
【问题描述】:

我听说在 C 中,main() 是可重入的,而在 C++ 中则不是。

这是真的吗?重新进入main()函数是什么场景?

【问题讨论】:

  • 我不认为你的意思是reentrant。确实,您可以在 C 中调用 main,但不允许在 C++ 中调用它。

标签: c++ c main reentrancy


【解决方案1】:

早期的 C++ 实现基于对 C 的转换,通过在 main 的开头添加函数调用来实现全局构造函数。在这样的实现下,再次调用main 会重新运行全局ctors,造成严重破坏,因此根本禁止这样做。

另一方面,C 没有理由禁止打电话给main,而且传统上总是可以的。

至于什么时候有用,我会说“很少”。我见过的大多数称为main 的程序都是IOCCC 条目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2018-06-22
    • 2020-01-06
    • 2011-06-09
    • 1970-01-01
    相关资源
    最近更新 更多