可能重复:
restrictions on the main() function
Is it legal to recurse into main() in C++?
我在 C ++ Primer 中读到main
不允许递归调用,而在此处的一些相关问题中,确实证实它是非法的。
但为什么这是非法的?只要你避免堆栈溢出,在自己内部调用main
会有什么问题?
答案 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
的可能调用(这将是递归的)。