c - 为什么 void main() 如此受欢迎?

标签 c standards program-entry-point

在 C89/C99/C11 中,在独立环境中,入口点函数是实现定义的。在托管环境中,它必须是严格符合程序的 int main。大多数现代编译器都会将 void main 设为错误。但是,我看到许多用户使用 void main。即使在不符合标准的编译器中允许使用它,为什么还要使用它呢?我看不出为什么 void mainint main 更受青睐。即使在 C89 中,省略 return 也是未定义的行为。

void main 的流行是否有历史原因?

我认为我的问题主要不是基于意见。本帖中已经提出了一些有效的想法,例如微软的 void main 扩展,以及由于 Window 的流行,以及它是 C 书籍重印错误信息的结果。这些都是客观的历史原因。

最佳答案

Is there a historical reason for the popularity of void main?

在我看来,历史原因是关于 C 编程的书籍(尤其是流行的书籍)是在标准采用之前编写的,并且是在标准采用之后(甚至之前)出版的。许多关于 C 语言编程的书籍都包含返回类型为 void 的 main 声明。有时,这些书在不修改内容的情况下重新出版。而且由于旧的编译器通常支持 main 的 void 声明,这样的声明很受欢迎。

也许一些编译器生产商(甚至可能是 Microsoft。如您所知,C# 允许使用 void 声明 Main。至少 Borland C++ 允许使用 void main)引入了他们自己的 main 实现定义声明。 main with void 是一个流行的实现定义声明。因此,有关 C 语言编程的书籍通常会引用这些流行的编译器及其实现定义的主要声明。

关于c - 为什么 void main() 如此受欢迎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29168331/

相关文章:

c - 带 C 后端的简单 GUI 应用程序

java - java中的 "main"可以返回一个String吗?

Python:在主程序和 PEP 8 的开头导入

java - 我的主类中有大约 10k 行代码,我应该担心吗?

c - 找到最长的非递减子序列

c - int variable++ 不会递增超过 1 或将重置为 0

c - 在 C 中通过名称将数组传递给函数

c - ANSI C 和 ISO C 之间有什么区别吗?

html - 目前让网站图标在所有支持网站图标的浏览器中显示的最佳方法是什么?

java - Java JCA 中的 OpenPGP