main函数的返回值是int类型,不能是void

在C和C++中,不接收任何参数也不返回任何信息的函数原型为”void foo(void);”. 可能正是由于这个原因,很多人误认为如果程序不需要返回值时,可以把main函数定义为: void main(void).

然而这是错误的!

main函数的返回值应该定义为int类型,C和C++标准中都是这样规定的.

对于”void main(void);”这种错误形式,虽然在一些编译器中可以通过编译(如vc6),但并非所有的编译器都支持,因为标准中从来没有定义过这种形式. g++3.2编译器中,如果返回值类型不是int类型,根本不会通过编译;则gcc3.2 编译器则会发出警告.

所以,如果想让你的程序有很好的可移植性,请一定要使用int main.

main函数几种形式如下:
C语言中:
int main(void);
int main(int argc,char* argv[]);
或者 int main(int argc, char** argv);
C++语言中:
int main();
int main(int argc,char* argv[]);

在main函数的返回值必须是int类型的前提下,如果main函数的最后没有写return语句,会如何?

C99和C++98规定编译器要自动在生成的目标文件中加入”return 0;”, 表示程序正常退出.写程序好的习惯是自己在main函数的最后加上return语句,因为并不是所有的编译器都支持这一特性.
例如:
vc6编译器不会在目标文件中自动添加return 0语句.
gcc3.2(Linux下的C编译器)支持这个特性.
g++3.2(Linux下的C++编译器)支持这个特性.

总结:
综上所述,由于void main类型不在规定中,而且不同的编译器对main函数的返回类型的处理不一样,以及不同编译器不一定会在目标文件中自动加入return语句这3点,为了让我们的程序有很好的可移植性,写main函数时需要按照以下形式:
int main()
{
return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值