我读了一些在 C++ 中不允许 main() 递归的地方,但是当我尝试它运行时没有任何错误
#include<iostream>
using namespace std;
int i=10;
int main()
{
if(i==1)
{
cout<<i;
return 0;
}
i--;
main();
}
显式调用main
是未定义的行为,任何事情都可能发生(包括似乎有效)。
3) main 函数不得在程序中使用。[...]
编译器(正如所有未定义的行为一样)不需要提供诊断,也不需要运行时崩溃。
代码无效,需要符合要求的编译器才能发出诊断。这样做之后,编译器就可以自由地做任何事情,包括生成一个可执行文件,该文件可以运行并执行您期望它执行的操作。
请注意,g++ 似乎没有发出诊断,但 EDG 编译器(通过 comeau online)会发出。