在 C89/C99/C11 中,在独立环境中,入口点函数是实现定义的。在托管环境中,它必须是严格符合程序的 int main
。大多数现代编译器都会将 void main
设为错误。但是,我看到许多用户使用 void main
。即使在不符合标准的编译器中允许使用它,为什么还要使用它呢?我看不出为什么 void main
比 int 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/