起初一直以为main函数不可以被递归调用,直到遇到一个笔试题,回来一试,竟然可以。。。下面的内容来自http://www.cnblogs.com/xkfz007/archive/2012/02/16/2353749.html,可参考一下。
在C和C++中是不同的,我们知道C语言比较宽松、灵活,而C++的目标就是改变C语言比较宽松的特点,实行了比较严格的做法,包括严格的类型检查等等。实际上,在C语言中,main函数可被递归调用,而在C++标准中,main函数不可以被递归调用。C中递归调用: (参考:http://blog.youkuaiyun.com/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.youkuaiyun.com/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了。
转载于:https://blog.51cto.com/10622551/1688189