建议0:不要让main函数返回void(2)
在Linux环境下,采用命令:
- g++ main.cpp
生成可执行文件a.out。然后,执行命令:- ./a.out && ehco "success"
结果输出success。
修改上述程序:
- int main()
- {
- return -1;
- }
做同样测试,无输出。
命令A && B中的&&类似于C++(www.cppentry.com)中的并操作(&&),如果A命令正确执行,接着就会执行命令B;如果A出现异常,则B不执行。通过以上分析可知,当main()返回0时,a.out正确执行并返回;但是如果返回-1,程序就不能正常返回了。
最后,还得说明一下C++(www.cppentry.com)标准中一个“好坏难定”的规定:
在main函数中,return语句的作用在于离开main函数(析构掉所有具有动态生存时间的对象),并将其返回值作为参数来调用exit函数。如果函数执行到结尾而没有遇到return语句,其效果等同于执行了return 0。
也就是说,如果函数执行到main结束处时没有遇到return语句,编译器会隐式地为你加上return 0;,效果与返回0相同。之所以说这条规定“好坏难定”,一方面是因为它让你省去了多敲几个字的麻烦;另一方面是因为这种便捷会让某些程序员忽视编译器代替他做的工作,而在思维中形成一种错误的认识:此函数可以无返回。
在应用这一规则时,你还得注意以下这两点:
main函数的返回类型是int,不是void或其他类型。
该规则仅仅对main函数适用。
按照以上标准得到了一个完全合乎C/C++(www.cppentry.com)标准的最小化的完整C++(www.cppentry.com)程序:
- int main() { }
本人不推荐使用上述这条规则,建议加上return 0;,杜绝那些不必要误解。
请记住:
要想保证程序具有良好的可移植性能,就要标明main函数返回int,而不是void。强烈建议使用以下形式:
- int main()
- {
- // some processing codes
- return 0;
- }