小编典典

main() 中的 return 语句与 exit()

all

我应该使用exit()还是只使用return语句main()?就我个人而言,我喜欢这些return陈述,因为我觉得它就像阅读任何其他函数一样,并且当我阅读代码时流程控制很流畅(在我看来)。即使我想重构main()函数,拥有return似乎比exit().

做一些没有exit()做的特别的事情return吗?


阅读 118

收藏
2022-06-18

共1个答案

小编典典

其实 还是 有区别的,但是很微妙。它对 C++ 有更多的影响,但差异很重要。

当我调用returnmain(),将为我的本地范围对象调用析构函数。如果我调用exit()则不会为我的本地范围对象调用析构函数!
再读一遍。exit() 不返回
。这意味着,一旦我称它为,就“没有后盾”。您在该函数中创建的任何对象都不会被销毁。通常这没有任何影响,但有时确实如此,例如关闭文件(您肯定希望所有数据都刷新到磁盘吗?)。

请注意,static即使您调用exit().
最后请注意,如果您使用abort(),则不会销毁任何对象。也就是说,不会调用全局对象、静态对象和局部对象的析构函数。

在倾向于退出而不是返回时要谨慎行事。

http://groups.google.com/group/gnu.gcc.help/msg/8348c50030cfd15a

2022-06-18