C中main()的定义

Fro*_*art 11 c

可能重复:
在C中定义无参数函数main()的标准方法

我可以在C中使用函数的声明定义,main()如下所示:

int main() {}
Run Code Online (Sandbox Code Playgroud)

是的,我看到标准说只有两个保证支持的版本:

int main(void) {}
Run Code Online (Sandbox Code Playgroud)

int main(int argc, char* argv[]) {}
Run Code Online (Sandbox Code Playgroud)

但空洞的做法呢?我知道它有另外的含义而不是C++(在C中,它意味着这个函数的参数的数量和类型是未知的),但我在C中看到了很多带有main 声明定义的代码.

那谁错了?

Ker*_* SB 10

在C,还有的之间的差异声明 int main();int main(void);(前宣布与功能不明数量的参数,而后者实际上是被称为原型).然而,在函数的定义,都main()main(void)定义一个函数,它没有参数.

另一个签名main(int, char**)另一种形式.符合实现必须接受任何一种形式,但也可以接受其他实现定义的签名main().任何给定的程序当然只能包含一个名为的函数main.

  • 值得注意的是,虽然`int main(){...}`作为定义确实定义了一个没有参数的函数,但它本身并没有为`main`引入一个原型.即在这样的定义之后,`main`仍被*声明*作为具有未指定参数的函数."无参数"位仅影响"main"的主体. (2认同)