代码之家  ›  专栏  ›  技术社区  ›  Armen Tsirunyan

为什么在C++中不允许调用主()

  •  16
  • Armen Tsirunyan  · 技术社区  · 14 年前

    C++03 3.6.1.3 主功能不应在程序中使用(3.2)。...

    我想知道为什么这个规则存在…是否有人知道如果使用main会有问题的任何系统/实现?

    P、 第1节。我知道这个词的定义 used . 2。我知道有一些简单的解决方法,比如从main()调用单个MyMain(),然后使用MyMain()代替。三。问题是关于真实世界的实现 如果没有限制就有问题。谢谢!

    3 回复  |  直到 6 年前
        1
  •  35
  •   Chris Becke    14 年前

    除了其他答案:c++规范保证所有静态初始化都在调用main之前发生。

    如果代码可以调用main,则某些静态作用域对象可以调用main,在这种情况下,将违反基本保证。

        2
  •  16
  •   nobody    10 年前

    main 用代码构造全局和静态,接受任何标识环境和命令行参数的参数,并将它们映射到C++的ARC/C/ARV/Env约定,为应用程序构建合适的堆栈和异常框架等。指定为初始化代码的符号 main() .

    主()

    因此,调用 主要的 从别处可以尝试第二次重新初始化应用程序框架或强制向OS发出意想不到的出口,这对我来说是灾难性的。

        3
  •  4
  •   Marcelo Cantos    14 年前

    C++的 main() 是一个奇怪的小函数,它对于异常处理有不同的语法,不必返回一个值,即使它必须被定义为返回int,等等。我不知道这是否影响了任何实实在在的实现,但是我猜想限制是为了给编译器编写者在它们的实现方式上有一定的纬度。 .