int main 不是C99才开始规定的,而是C89标准(第一个C语言标准)开始就这么规定了。从来没规定过 void main 。
这是C89标准文件:
只是当时没规定必须这么写,而只是推荐这么写。用词是 can ,没说 shall。
最早规定“必须”写 int main 的,是C++98标准,用词就是 shall 了。也就是不写 int main 就算错误了。
C++98标准如下:
只是早期的编译器没那么遵守标准而已。
如果用新一点的编译器,你就会发现,用 C 的时候,void main 是警告,而用C++的时候,void main 是错误。