起初一直以为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了。