我应该在main()
句中使用exit()
句还是return
句?就我个人而言,我喜欢return
语句,因为我觉得这就像阅读任何其他函数一样,而且在阅读代码时,流控制是平滑的(在我看来).即使我想重构main()
函数,return
似乎比exit()
更好.
exit()
做了return
做不到的特殊事情吗?
我应该在main()
句中使用exit()
句还是return
句?就我个人而言,我喜欢return
语句,因为我觉得这就像阅读任何其他函数一样,而且在阅读代码时,流控制是平滑的(在我看来).即使我想重构main()
函数,return
似乎比exit()
更好.
exit()
做了return
做不到的特殊事情吗?
实际上,有is个不同之处,但很微妙.它对C++有更多的含义,但差异很重要.
当我在main()
中调用return
时,将为本地作用域对象调用析构函数.如果我拨打exit()
no destructor will be called for my locally scoped objects!,请重新阅读.exit()
does not return. 这意味着,一旦我称之为"没有后座"在该函数中创建的任何对象都不会被销毁.这通常没有什么影响,但有时会有影响,比如关闭文件(当然你想将所有数据刷新到磁盘上?).
请注意,即使您呼叫exit()
,也会清除static
个对象.最后请注意,如果使用abort()
,则不会销毁任何对象.也就是说,不会调用全局对象、静电对象和本地对象的析构函数.
Proceed with caution when favoring exit over return.
http://groups.google.com/group/gnu.gcc.help/msg/8348c50030cfd15a个