起初一直以为main函数不可以被递归调用,直到遇到一个笔试题,回来一试,竟然可以。。。下面的内容来自,可参考一下。
在C和C++中是不同的,我们知道C语言比较宽松、灵活,而C++的目标就是改变C语言比较宽松的特点,实行了比较严格的做法,包括严格的类型检查等等。实际上,在C语言中,main函数可被递归调用,而在C++标准中,main函数不可以被递归调用。C中递归调用: (参考:)
#include <stdio.h>
int main()
{
int c;
if((c=getchar()) != EOF) //EOF 用Ctrl+Z(win)
// Ctrl+D(linux)
{
main();
}
printf("%c",c);
return 0;
}
C++标准不允许,并不意味着就不可以下main函数递归调用的C++程序,只要你的编译器支持就行了。
我在linux的g++编译器上试验了,可以进行递归调用的。(参考:)
int main()
{
static int a = 5;
cout<<a<<endl;
if(--a>0)
main();
return 0;
}
然后在windows下也进行了实验,也是可以的。
另外,
这样就可以在命令行使用VC的编译器cl.exe了。