7

可能重复:
主函数可以在 C++ 中调用自身吗?

我发现这个问题很有趣,但有点虚幻。Question 6.42 C++ how to program by Dietel “可以在你的系统上递归调用 main 吗?编写一个包含函数 main 的程序。包括静态局部变量 count 并初始化为 1。每次调用 main 时后递增并打印 count 的值. 编译你的程序. 会发生什么?

我编写了如下程序,但是我在 10 次后停止了递归,就好像我要让它继续运行一样,它将在 41000 左右的值处停止。

我的问题:在 c++ 中递归调用 main 函数如何合法,是否应该执行该程序以堆栈溢出或内存错误等。请解释。

#include <iostream>
using namespace std;
int main()
{
       static int count = 0;
       count++;
       if(count <= 10) {
                cout << count << endl;
                return main(); //call main
                }//end if

       system("pause");
       return 0;//successful completion
}//end main

谢谢你

4

1 回答 1

20

main()在 C++ 中递归调用函数如何合法

这是不合法的。C++ 语言标准规定“不得在程序中使用 main 函数”(C++11 §3.6.1/3)。调用函数是一种“使用”形式。

任何调用的程序都会main()表现出未定义的行为(从技术上讲,这样的程序格式错误,因为被违反的规则是可诊断的语义规则,但如果大多数编译器拒绝该程序,我会感到惊讶)。请注意,这不会阻止启动程序的运行时基础结构调用该main()函数。

于 2012-07-05T17:35:36.893 回答