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