根据最新的C标准,定义无参数函数的正确方式是什么:int main()
还是int main(void)
?
两种形式的定义都是有效的(没有void
的一种是无效的原型和一个不完整(尽管有效)的声明)。
形式int main(void) { /*任何事情*/ }
也为函数提供了原型。
形式int main() { /*任何事情*/ }
不提供原型(编译器无法检查是否正确调用它)。
请参阅标准(PDF)
6.7.5.3/14
函数声明符中的空列表是该函数的定义的一部分,指定该函数没有参数。
定义的区别:int main() { /*任何事情*/ }
和声明: int main();
以及原型: int main(void);
。
定义不提供原型;
声明是有效的,但不指定有关参数数量或类型的信息;
原型是可以的,并且与定义兼容。