int main()vs void main()in C

在C中,我知道int main()返回一个int,其中void main()不是。 除此之外,他们之间有什么区别吗? 首先比第二好?

绝大多数情况下, int main(void)int main(int argc, char* argv[])是您需要使用的。 特别是,如果你正在编写一个程序,这个程序将被任何主要的编译器编译成在个人计算机上运行,​​并且有一整套C标准库,那么你几乎肯定需要从main返回一个int

(我也避免使用空的参数列表,请参阅“ 为什么我们不使用(void)在main? ”)

C99标准确实允许其他实现定义的签名,如果您已经阅读了编译器的手册并且说明可以,那么您可以使用这些标准。

(5.1.2.2.1)它应该被定义为返回types为int且没有参数…或者带有两个参数…或者以某种其他实现定义的方式

例如,用于Microchip PIC32MX系列微控制器的HITECH PICC32编译器需要一个void main(void)签名 – 因为真的有什么会看到返回值? 另一方面,Microchip用于相同处理器(基于GCC)的官方编译器使用通常的int main(void)

就个人而言,即使他们允许,我也会避免他们。

请参阅下面的注释“ 为什么我们不使用(void)in main? ”来进行一些有趣的讨论。

如果你的书说void main()它是非常非常过时的,是由一个白痴(或两者)

编辑:确定,除非你是在一个非常不可能的系统,你有一个独立的主 – 请参阅为什么C和C ++的主要function的types留给用户来定义?

void main()无效C. int main()是。 这是主要的区别。