C Isn';t在int main中无效(无效)冗余?

C Isn';t在int main中无效(无效)冗余?,c,main,C,Main,我所拥有的C99标准文件明确指出: 6.7.5.3.14标识符列表仅声明功能参数的标识符作为该函数定义一部分的函数声明器中的空列表指定该函数没有参数。不属于该函数定义一部分的函数声明器中的空列表指定不提供有关参数数量或类型的信息 我从那句话中理解的是,在函数定义中写入void是多余的。我答对了吗?不,你有点错 void指定绝对不传递任何参数 空括号()表示可以使用任意数量的参数调用函数,而不会生成警告 注意:记住,main()的实现没有定义或提供原型 也许,C11标准,第5.1.2.2.1章

我所拥有的C99标准文件明确指出:

6.7.5.3.14标识符列表仅声明功能参数的标识符作为该函数定义一部分的函数声明器中的空列表指定该函数没有参数。不属于该函数定义一部分的函数声明器中的空列表指定不提供有关参数数量或类型的信息

我从那句话中理解的是,在函数定义中写入
void
是多余的。我答对了吗?

不,你有点错

  • void
    指定绝对不传递任何参数
  • 空括号
    ()
    表示可以使用任意数量的参数调用函数,而不会生成警告
注意:记住,
main()的实现没有定义或提供原型

也许,
C11
标准,第5.1.2.2.1章,对其进行了更好的描述

程序启动时调用的函数名为
main
。实现没有声明此函数的原型。应使用返回类型
int
进行定义,且无参数:

  int main(void) { /* ... */ }`
或具有两个参数(此处称为
argc
argv
,但可以使用任何名称,因为它们是声明它们的函数的本地名称):

或同等品;10) 或者以其他实现定义的方式

不,你有点错

  • void
    指定绝对不传递任何参数
  • 空括号
    ()
    表示可以使用任意数量的参数调用函数,而不会生成警告
注意:记住,
main()的实现没有定义或提供原型

也许,
C11
标准,第5.1.2.2.1章,对其进行了更好的描述

程序启动时调用的函数名为
main
。实现没有声明此函数的原型。应使用返回类型
int
进行定义,且无参数:

  int main(void) { /* ... */ }`
或具有两个参数(此处称为
argc
argv
,但可以使用任何名称,因为它们是声明它们的函数的本地名称):

或同等品;10) 或者以其他实现定义的方式


原型钻头是这里的重要部分。如
intmain(void)中的函数定义之前有一个函数原型(即不是函数定义一部分的函数声明符);int main(){…}
,那么显然C99 6.7.5.3p14(或等效的C11 6.7.6.3p14)将适用。原型位是这里的重要部分。如
intmain(void)中的函数定义之前有一个函数原型(即不是函数定义一部分的函数声明符);int main(){…}
,那么显然C99 6.7.5.3p14(或等效的C11 6.7.6.3p14)将适用。
main()
是一个特例,对于特定于
main的讨论来说
main()
是一个特例,对于特定于
main