前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一面(70)

基础知识 | 每日一面(70)

作者头像
小林C语言
发布2020-04-02 17:31:19
2510
发布2020-04-02 17:31:19
举报

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:我觉得把 main() 声明为 void 不会失败, 因为我调用了 exit()

而不是 return , 况且我的操作系统也忽略了程序的退出/返回状态。

小林:这跟 main() 函数返回与否, 或者是否使用返回状态都没有关系; 问题是如果main() 声明得不对, 它的调用者 (运行期初始代码) 可能甚至都不能正确调用它。你的操作系统可能会忽略退出状态, 而 void main() 在你那里也可能可行, 但这不可移植而且不正确。

读者:那么到底会出什么问题?真的有什么系统不支持 void main()

吗?

小林:有人报告用 BC++4.5 编译的使用 void main() 的程序会崩溃。某些编译器(包括 DEC C V4.1 和打开某些选项的 gcc) 会对 void main() 提出警告。

读者:我一直用的那本书总是使用 void main()。

小林:可能这本书的作者把自己也归为目标读者的一员。很多书不负责任地在例子中使用 void main(), 并宣称这样是正确的。但他们错了。

读者:从 main() 中, exit(status) 和返回同样的 status 真的等价吗?

小林:是也不是。标准声称它们等价。但是如果在退出的时候需要使用 main() 的局部数据, 那么从 main() return 恐怕就不行了。少数非常古老不符合标准的系统可能对其中的某种形式有问题。最后, 在 main() 函数的递归调用时,二者显然不能等价。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档