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 的一部分,而不必使用它们。由于这被认为是实现的一部分,它可以做普通程序通常不能(或不应该)做的事情。