首页 > 解决方案 > c语言中可能的函数重载?

问题描述

我们在 C 中有函数重载吗?main() 函数是如何工作的?如果我们使用 int main() 或 void main() 或 char main(),它工作得非常好。这是如何在 C 中管理的?

标签: coverloadingmainvoidreturn-type

解决方案


我们在 C 中有函数重载吗?

不。

函数标识符始终具有外部链接或内部链接。在整个程序中,每个被访问的具有外部链接的标识符都指的是一个函数或对象。(从未被引用的标识符可能不引用任何实际存在的函数或对象。)在任何翻译单元中,可以将在别处具有外部链接的标识符声明为具有内部链接,在这种情况下,它代替标识(一个) 函数或对象出现在同一翻译单元的其他地方。

在所有情况下,在任何给定的翻译单元内,引用现有函数的范围内函数标识符恰好指的是一个现有函数。

main() 函数是如何工作的?如果我们使用 int main() 或 void main() 或 char main(),它工作得非常好。

在大多数情况下,main()它就像任何其他功能一样工作,但有额外的规则。具体来说,一个严格符合的 C 程序可以选择以下两个签名之一main()

int main(void)

int main(int argc, char *argv[])

(或等效配方)。每个程序必须选择一个。C 实现的工作是执行对这些签名之间的选择所需的任何调整。

如果您的程序声明main()的返回类型不是int,那么它是非(严格)符合的。尽管如此,任何特定的实现都可能接受其他形式,并且这些形式似乎与这样的实现“工作得非常好”,但是语言标准没有提供任何基础来期望这样的程序有任何特定的行为。

另请注意,替代签名main()不构成函数重载。在任何情况下,任何程序中都只有一个外部函数main


推荐阅读