为什么在C ++中不允许递归的main()调用?

时间:2011-03-16 14:08:12

标签: c++ main

  

可能重复:
  restrictions on the main() function
  Is it legal to recurse into main() in C++?

我在 C ++ Primer 中读到main不允许递归调用,而在此处的一些相关问题中,确实证实它是非法的。

但为什么这是非法的?只要你避免堆栈溢出,在自己内部调用main会有什么问题?

2 个答案:

答案 0 :(得分:2)

嗯,标准声明:

3.6.1.3 “函数main不得在程序中使用。”

5.2.2.9 “允许递归调用,但名为main的函数

除外

我想这是因为main()是一个特殊的函数,用作程序的入口点。我会说保持特殊,不要把它降低到正常功能的水平,因为它不是。

答案 1 :(得分:0)

我认为3.6.1 / 3中的措辞禁止这样做,并表示不得在程序中使用:

  

不得使用函数main   (3.2)在一个程序中。联系   (3.5)主要是   实施定义。一个程序   声明main为内联或静态   生病了。主要名称不是   另外保留。 [例子:成员   函数,类和枚举   可以称为主要,也可以称为实体   其他名称空间。 ]

然后在3.2 / 2

  

对象或非重载函数是   如果其名称出现在a中,则使用   潜在的评估表达。

这清楚地表明使用包括main的可能调用(这将是递归的)。