宣布主要原型

有什么理由我从未在C程序中看到main的原型声明,即:

int main(int argc, char* argv[]); int main(int argc, char* argv[]) { return 0; } 

似乎总是不一致..

C语言标准,草案n1256 :

5.1.2.2.1程序启动

1程序启动时调用的函数名为main该实现声明此函数没有原型 。 它应该使用返回类型int并且没有参数来定义:

int main(void) { /* ... */ }

或者使用两个参数(这里称为argcargv ,尽管可以使用任何名称,因为它们是声明它们的函数的本地名称):

int main(int argc, char *argv[]) { /* ... */ }

或同等学历; 9)或以其他一些实现定义的方式。

强调我的。

声明原型意味着你想在别处调用它,这对main()函数没有意义。

不需要原型,因为main不应该被其他程序调用(并且在C ++中调用main实际上是被禁止的)。

简单的原因是控制总是首先进入main。因此它由编译器自动定位,因此给它的原型是多余的并且是没有用的。

当我们在定义之前调用函数时,我们也使用原型。因此,查看函数原型编译器可以决定调用是否合法。但是在main的情况下,我们习惯于提供它的定义及其声明 (在逻辑上也是正确的)因此不需要原型。

即使我们将c程序组织成多个文件,也不需要main的原型