c语言 - int main(void) 中的 void 不是多余的吗?



我在C99标准文档中明确指出

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

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

没有,你稍微错了。

  • void指定绝对不传递参数。
  • 空括号()表示函数可以用任意个数的参数调用而不产生警告。

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

也许,C11标准,第5.1.2.2.1章,有更好的描述,

程序启动时调用的函数命名为main。实现没有为这个函数声明原型。它应该定义为返回类型int,不带参数:

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

或带两个形参(此处称为argcargv,但可以使用任何名称,因为它们对于声明它们的函数来说是局部的):

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

或等价的;10)或以其他实现定义的方式。

相关内容

  • 没有找到相关文章

最新更新