起初一直以为main函数不可以被递归调用,直到遇到一个笔试题,回来一试,竟然可以。。。下面的内容来自http://www.cnblogs.com/xkfz007/archive/2012/02/16/2353749.html,可参考一下。

       在C和C++中是不同的,我们知道C语言比较宽松、灵活,而C++的目标就是改变C语言比较宽松的特点,实行了比较严格的做法,包括严格的类型检查等等。实际上,在C语言中,main函数可被递归调用,而在C++标准中,main函数不可以被递归调用。C中递归调用: (参考:http://blog.csdn.net/songkexin/article/details/1842654#reply

 

#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++编译器上试验了,可以进行递归调用的。(参考:http://blog.csdn.net/jingdoit/article/details/6788058


int main()  
{  
   static int a = 5;  
   cout<<a<<endl;  
   if(--a>0)  
       main();  
   return 0;  
}

 然后在windows下也进行了实验,也是可以的。

另外,

VC默认安装成功后,并不具备能从命令行编译创建VC程序这一特征。我们必须做如下3步工作:
1 打开DOS命令提示符窗口。
2 在C盘根目录下输入:
CD Program Files\Microsoft Visual Studio\VC98\Bin
回车进入到如下目录:
C:\Program Files\Microsoft Visual Studio\VC98\Bin>
3 然后输入VCVARS32再回车,你可以看到如下信息:
C:\Program Files\Microsoft Visual Studio\VC98\Bin>VCVARS32
Setting environment for using Microsoft Visual C++ tools.
(参考:http://szy-891023.blog.163.com/blog/static/37074859201131102322967/

 这样就可以在命令行使用VC的编译器cl.exe了。