我应该使用exit()还是只使用return语句main()?就我个人而言,我喜欢这些return陈述,因为我觉得它就像阅读任何其他函数一样,并且当我阅读代码时流程控制很流畅(在我看来)。即使我想重构main()函数,拥有return似乎比exit().
exit()
return
main()
做一些没有exit()做的特别的事情return吗?
其实 还是 有区别的,但是很微妙。它对 C++ 有更多的影响,但差异很重要。
当我调用return时main(),将为我的本地范围对象调用析构函数。如果我调用exit(), 则不会为我的本地范围对象调用析构函数! 再读一遍。exit() 不返回 。这意味着,一旦我称它为,就“没有后盾”。您在该函数中创建的任何对象都不会被销毁。通常这没有任何影响,但有时确实如此,例如关闭文件(您肯定希望所有数据都刷新到磁盘吗?)。
请注意,static即使您调用exit(). 最后请注意,如果您使用abort(),则不会销毁任何对象。也就是说,不会调用全局对象、静态对象和局部对象的析构函数。
static
abort()
在倾向于退出而不是返回时要谨慎行事。
http://groups.google.com/group/gnu.gcc.help/msg/8348c50030cfd15a