在C++中,main()一般要求用int,即应写为
int main (){
……
return 0;
}
但有一些也可以写为void main() ,而有一些不能这么写,
任何时候都可以用int main(),所以建议不用void main(),
用C++编译器编译C一般不会有什么问题,因为C++是兼容C的。
扩展资料:
在C语言当中,一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main() 函数”,也就是“主函数”。比如有个“做菜”程序,那么“ 做菜 ”这个过程就是“主函数”。在主函数中,根据情况,你可能还需要调用“买菜,切菜,炒菜”等子函数。
main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库(dll)模块,这是其他windows程序可以使用的代码。
由于DLL模块不是独立的程序,因此不需要main函数。再比如,用于专业环境的程序-----如机器人中的控制芯片--可能不需要main函数。
从函数参数的形式上看,包含一个整型和一个指向字符指针的指针。当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件(对windows操作系统而言),这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。由系统在启动运行时传递参数。
在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:
命令参数1参数2....参数nt;
此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。
命令行与main()函数的参数存在如下的关系:
设命令行为:program str1 str2 str3 str4 str5
其中program为文件名,也就是一个由program.c经编译、链接后生成的可执行文件program.exe,其后各跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,共6个,指针数组的大小由参数argc的值决定,即为char*argv。
数组的各指针分别指向一个字符串。应当引起注意的是接收到的指针数组的各指针是从命令行的开始接收的,首先接收到的是命令,其后才是参数。
参考资料来源:百度百科--C++
参考资料来源:百度百科--main函数
楼上的都是用编译器说事儿,其实不是编译器的问题,是标准的问题,标准有多种,基本的国际标准有两种,每种也有不同的时期的版本,一般以最近期版本为准,编译器只是实现标准而已,编译器有很多,有的只遵循一种,有的兼容多种标准,一般都还扩展一些标准,对于这个main的返回值,不同的标准定义不同,编译器的处理也是多种多样,不要去深究,没有意义,或者说对于不是独孤求败的人没有必要去弄这个,那种可行用哪种就好,遵循你编译器来。
C有两个规范
ANSI C
main() {
// return 0; 可选
}
int main() {
return 0;
}
void main() {
}
==============
ISO C
int main() {
return 0;
}
void main() {
}
===============
至于C++的int main(),那是C++的ISO规范,C++也只有ISO规范 。
总体一般都是写int main(),原则上不会遇到任何问题。
在C++中,main()一般要求用int,即应写为
int main (){
……
return 0;
}
但有一些也可以写为void main() ,而有一些不能这么写
--------------------------------------------------------------------------------------------
任何时候都可以用int main(),所以建议不用void main()
用C++编译器编译C一般不会有什么问题,因为C++是兼容C的
要看输出,有一个办法:
在#include
并在return 0;前一行加getch();
这个是编译器的问题,和程序无关的,你可以改成下面的形式:
int main()
{
...
return 0;
}
___________________________________________________________________
用int声明函数是为了给操作系统返回一个值,表示程序正常运行与否。
dev-c++编译器对代码的要求比较严格,所以会出现`main' must return `int'
而用visual c++则不会提示这样的信息。
你在c-free建立的是C++工程, 默认用的g++编译器,
C++的main必须返回int,
你把main前的void去掉后, 函数的返回类型就默认为int
当然像vc那种的编译器只能算C/C++混合的编译器,对C++有些细节有出入