recursion of main

recursion of main

本文关键字:main of recursion      更新时间:2023-10-16

我读到一些在c++中不允许递归main()的地方,但当我尝试时,它运行时没有任何错误

#include<iostream>
using namespace std;
int i=10;
int main()
{
    if(i==1)
    {
        cout<<i;
        return 0;
    }
    i--;
    main();
}

显式调用main是未定义的行为,任何事情都可能发生(包括看似有效)。

C++03 3.6.1

3) 不得在程序中使用功能主体。[…]

编译器(正如所有未定义的行为一样)不需要提供诊断,运行时也不需要崩溃。

代码无效,需要符合要求的编译器来发布诊断。这样一来,编译器就可以自由地做任何事情,包括生成一个运行的可执行文件,并执行您期望它做的事情

请注意,g++似乎不会发出诊断,但EDG编译器(通过comeau在线)会发出诊断。