【发布时间】:2020-11-27 00:36:15
【问题描述】:
我们在 C 中有函数重载吗? main() 函数是如何工作的?如果我们使用 int main() 或 void main() 或 char main(),它工作得非常好。这是如何在 C 中管理的?
【问题讨论】:
-
在支持它的语言中,返回类型通常不参与重载过程(除了一些值得注意的例外,如 Perl 和 Haskell)。
-
撇开
void main()和char main()不是main的有效签名这一事实不谈,这并不是重载。重载允许具有相同名称的不同函数一起存在于一个声明性区域中。您所描述的总是涉及一个单一定义。 -
main()在 C 中可以有不同的签名,因为 C 语言标准为main()指定了它。请注意,正如@StoryTeller-UnslanderMonica 所提到的,您对main()的一些签名并未由标准指定。您的编译器允许它们的事实要么是疏忽,要么是对标准行为的扩展。 -
而且...除非您正在为独立环境编程,否则除了
int main(void)和int main (int argc, char *argv[])之外的所有内容都是错误的。 C11 Standard - 5.1.2.1 Freestanding environment 和 C11 Standard - §5.1.2.2.1 Program startup(p1)
标签: c overloading main void return-type