注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

杨伟的博客

程序人生

 
 
 

日志

 
 

关于 int main() 和 void main() 的争执:我就用 void main()!  

2009-08-08 10:38:00|  分类: IT界 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

太多人在 int main() 和 void main() 的争执上花太多精力了……

有人支持 C99 标准,认为 int main() 才是王道。
还有人藐视标准,觉得 void main() 用着也没错,管它呢!

按理说,直接把 void main() 修改为 int main() 就行了,别处什么也不用动(C99 规定编译器会自动加 return 0),用 int main() 还少敲一下键盘呢!但我个人觉得,void main() 就是要告诉看该代码的人:本程序不强调返回值。如果用 int main() 就得仔细了,main() 函数长了还要考虑什么地方有不同的返回值,如果不强调返回值的时候仍用 int main(),维护程序的时候会略显麻烦。

于是,对于不需要返回任何值的程序,我就直接写了 void main()。

简单来说为什么必须要求 int main():归根结底,是因为一些弱智的编译器不能自动返回一个数值给调用者,这样在某些古董操作系统下就会造成崩溃结果。
既然这样那就简单了,编译的时候如果发现 void main(),那编译器就帮忙修改一下不就好了?事实上,许多编译器(比如 VC)就是这么做的。既然如此,那用 void main() 又怎么了?反正编译器会代劳。编译器不就是简化人工作的工具吗?这是它应该做的。

又有人说编译器自动修改 void 为 int 不好。
那编译器自动加个 return 0 就好了?C99 都规定了编译器可以加东西,怎么改就不行?没准年底出个 C09 规定编译器需要自动修改 void main() 为 int main() 呢!之前的那个 C99 标准,再怎么说也 10 年了。

编程的目的是用程序表达自己的思想,不要被条条框框所局限。

总之,喜欢怎么写就怎么写吧,总之不要因为这个有负担就好。喜欢用 gcc 的那就老老实实的写 int main(),不必较真。

  评论这张
 
阅读(2)| 评论(4)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017