在int main(void)冗余中不是void吗?

xiv*_*r77 1 c program-entry-point

我已经明确指出C99标准文件

6.7.5.3.14标识符列表仅声明函数参数的标识符.函数声明符中的空列表是该函数定义的一部分,指定该函数没有参数.函数声明符中的空列表不是该函数定义的一部分,它指定不提供有关参数数量或类型的信息.

我从那句话中解释的是,void在函数定义中写入是多余的.我弄错了吗?

Sou*_*osh 5

不,你有点不对劲.

  • void 指定绝对没有传递参数.
  • 空括号()表示可以使用任意数量的参数调用该函数,而不会生成警告.

注意:请记住,实现没有为实现定义或提供原型main().

也许,C11标准,第5.1.2.2.1章,描述它更好的方式,

在程序启动时调用的函数被命名main.该实现声明此函数没有原型.它应定义为返回类型int且没有参数:

  int main(void) { /* ... */ }`
Run Code Online (Sandbox Code Playgroud)

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

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

或同等学历; 10)或以某种其他实现定义的方式.