在PaperBirdMaster 用户的建议下,我决定提出这篇文章标题中指出的问题。
基本上,正如我对所述用户所提到的,我在不同的 SO 答案中看到,在 C++ 中,没有必要return 0;
在函数中包含指令,main
因为编译器能够自行包含所述指令。上述说法有多少真实性?
就个人而言,我更喜欢包含 a ,return 0;
因为它遵循在return
函数内部使用 a 的思路,因为根据定义,函数返回一个值。如果main
他将其声明为. 会有所不同void main()
,这不是标准的,但至少它在 Visual Studio 中是有效的,例如,他会看到需要包含某种return
.
另一方面,与上述所有内容相关的是,使用另一种类return
似的类型有多有效,例如,return EXIT_SUCCESS;
可以在 Luis Joyanes 的一本关于 C++ 的书中找到。
提前感谢您的回复和/或评论。
查看C++14草案,在第 3.6.1 节中,我们发现以下内容:
这就是说:
所以答案是否定
return
的,在main函数中包含该语句不是强制性的。是的,当应用程序需要根据执行结果返回不同的值时(例如,指示错误),必须添加此指令。
如果我们阅读上述第 2 节(3.6.1):
这基本上意味着main函数 必须返回一个 type
int
。当然,出于兼容性的原因,有些编译器会吞下……void
但要小心这一点,因为没有什么能保证编译器的下一个版本会同时接受该许可证和许多其他许可证……你可能会发现自己处于以下情况必须编辑数十行代码才能重新编译程序。EXIT_SUCCESS
不是类型而是常量:stdlib.h
它可以通过or用于 C 和 C++cstdlib
。因此,
EXIT_SUCCESS
在您的情况下,它等同于 putreturn 0;
。EXIT_SUCCESS
那么,如果你写得更多,为什么还要使用呢?好吧,请记住,C 和 C++ 都不是为特定架构设计的……如果您发现自己的操作系统中,应用程序必须在正确完成时返回 0 以外的值,宏将适应而无需问题,而您将不得不
0
手动修改它。确实,有细微差别。
main
,其行为已定义。return
除 之外的main
任何指令,但它这样做是为了遵循标准,而不是因为它是编译器的自由选择。在C++ 标准中,第一点的相关文本是(我的翻译和强调):
第二点的相关文字是(我的翻译和强调):
结论。
虽然遵循标准的 C++ 编译器确实在
main
没有声明的函数上以定义的方式运行return
,但我(个人)反对它,原因如下:main
会更加令人不安。return
可以在末尾添加注释
main
以表明该意图:但是编写
return
适当的语句要容易得多!解释语句“ return 0; ”的这个话题;它的作用是终止函数并将控制权返回到调用函数的位置。例如:对于编写“Hello World”的简单C++程序;该指令的作用是结束“ main ”并将控制权返回给我们机器的操作系统;值0告诉操作系统程序已成功完成。根据最新版本的C++;这个return 0可以省略,程序正常运行!
我理解这些论点和良好的编程实践。但是打破惯例你可以返回一个 99 并且它只对你有意义,从某个控制台操作 main 并访问该返回值。