主函数如何在C中有2个声明/定义?
main()C 中的函数有多个定义。
int main (void) { body } (1)
int main (int argc, char *argv[]) { body } (2)
(https://en.cppreference.com/w/c/language/main_function)。
这怎么可能,因为 C 不能有同一个函数的多个声明/定义?
回答
该main函数的特殊之处在于它由运行时调用,因此它允许具有这两个签名之一,但不能同时具有这两个签名。
据推测,运行时将所需的参数推送到堆栈上作为调用的一部分,main而不必使用它们。因为这被认为是实现的一部分,所以它可以做普通程序通常不能(或不应该)做的事情。