C不支持函数重载。那么我们怎么能有3个主要的原型? 拥有3个原型的历史原因是什么?
答案 0 :(得分:9)
main
只有两个原型,需要符合标准的C实现来识别:int main(void)
和int main(int, char *[])
。这不是重载,因为每个程序仍然只能有一个main
;在一个程序中有void foo(int, double)
而在另一个程序中有char *foo(FILE *)
也没有超载。
这两个原型的原因是方便:一些应用程序需要命令行参数,而其他应用程序则不打扰它们。
所有其他原型,例如void main(void)
和int main(int, char *[], char *[])
,都是依赖于编译器/平台的扩展。