C++03 3.6.1.3
: 函数main不应在程序中使用(3.2)。...
我想知道为什么有这个规定... 有人知道有哪些系统/实现会出现问题,如果使用了main函数吗?
P.S. 1. 我知道“使用”这个术语的定义。2. 我知道有简单的解决方法,比如从main()调用一个单独的MyMain()并使用MyMain()代替。3. 这个问题是关于现实世界中的实现,如果没有这个限制,会出现问题的。谢谢!
C++03 3.6.1.3
: 函数main不应在程序中使用(3.2)。...
我想知道为什么有这个规定... 有人知道有哪些系统/实现会出现问题,如果使用了main函数吗?
P.S. 1. 我知道“使用”这个术语的定义。2. 我知道有简单的解决方法,比如从main()调用一个单独的MyMain()并使用MyMain()代替。3. 这个问题是关于现实世界中的实现,如果没有这个限制,会出现问题的。谢谢!
main
前缀代码的自由,用于构造全局和静态变量、接受任何参数来识别环境和命令行参数并将它们映射到C++的argc/argv/env惯例、为应用程序构建适当的堆栈和异常框架等。需要考虑的是,并非所有环境都允许可执行映像有任何其他符号被指定为初始化代码在main()
之前运行。main()
中,以及使用从C和C++的0/非零约定到实际成功/失败值的某些映射调用OS。main
可能会尝试对应用程序框架进行第二次重新初始化或强制意外退出到OS——这听起来对我来说是灾难性的。C++中的main()
是一个奇怪的小函数,对于异常处理有不同的语法,即使必须定义为返回int,也不需要返回值等等。我不知道这是否会影响任何真正的实现,但我猜想这种限制的存在是为了让编译器写手在实现main()
时具有一定的灵活性。
main
(否则它只会加载一个顶部)。 - leppiemain
到底意味着什么。 - undefined