【发布时间】:2015-05-23 23:14:56
【问题描述】:
在 C89/C99/C11 中,在独立环境中,入口点函数是实现定义的。在托管环境中,它必须是严格符合程序中的int main。大多数现代编译器都会使void main 出错。但是,我看到许多用户使用void main。即使在不符合标准的编译器中允许使用它,为什么还要使用它?我看不出为什么void main 比int main 更受欢迎。即使在 C89 中,省略 return 也是未定义的行为。
void main的流行有历史原因吗?
我认为我的问题主要不是基于意见。在这个线程中已经提出了一些有效的想法,例如微软的void main 扩展,以及自从Window 流行以来,以及它是C 书籍重印错误信息的结果。这些都是客观和历史原因。
【问题讨论】:
-
可能是因为很多人不关心将失败/成功返回给操作系统。
-
可能与想要返回 42 有关,但没有人知道它应该是什么意思。
-
人们并不总是知道自己在做什么。
-
请参阅:What should
main()returnin C and C++? 以了解有关该主题的综合处理。 IMO,它很受欢迎,因为(a)它允许您避免编写一行代码代码,并且(b)微软说它在 Windows 机器上是可以的。这也意味着您不关心程序的退出状态——您不是在退出状态很重要的脚本环境中编写代码。 -
呃,Herb Schildt...lysator.liu.se/c/schildt.html