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