int main()

一个 C 程序总是以 main() 函数开始执行的,可以说这就是 C 程序的基本模块。

C 语言因为年代久远,在不同时期都有着不同的标准 C89 C99 C11 ...

在 C89 里无返回的主函数或者空主函数还是可以被接受的,但它仅仅是可接受,并不是标准所允许的语句。

void main()
或者
main()

在 C99 的标准里取消了不写函数返回类型默认就是 int 的规定,所以 main() 不再被支持。
至于 void main() 本来就不是标准所允许的内容,更没有必要被支持。

这就导致了老师在课上用 VS2010 演示的代码我在自己电脑上用 VS2017 打了一遍一摸一样的却不能通过编译的情况,实在是很尴尬的。

目前大部分的书籍经过修订都删除或者修改了 void main() 这类语句,但是并没有对此进行说明,翻看图书馆的旧书籍弄的人一头雾水的。而且因为教材更新的成本,在课后布置的书面作业里遍地 void main() ,实在是不知道从哪里吐槽起。

还是尽量戒除掉 void main() 这种代码风格吧,如果想自己的代码方便移植的话。 如果不需要从命令行中获取参数,可以用 int main(void)


参考于 C Primer plus 第五版