我在C99标准文档中明确指出
6.7.5.3.14标识符列表只声明函数参数的标识符。函数声明符中的空列表作为该函数定义的一部分,指定该函数没有形参。函数声明符中的空列表不是该函数定义的一部分,它指定不提供有关形参数量或类型的信息。
我从那句话中解释的是,在函数定义中写void
是多余的。我理解对了吗?
没有,你稍微错了。
-
void
指定绝对不传递参数。 - 空括号
()
表示函数可以用任意个数的参数调用而不产生警告。
注意:请记住,没有为main()
定义或提供的原型。
也许,C11
标准,第5.1.2.2.1章,有更好的描述,
程序启动时调用的函数命名为
main
。实现没有为这个函数声明原型。它应该定义为返回类型int
,不带参数:int main(void) { /* ... */ }`
或带两个形参(此处称为
argc
和argv
,但可以使用任何名称,因为它们对于声明它们的函数来说是局部的):int main(int argc, char *argv[]) { /* ... */ }
或等价的;10)或以其他实现定义的方式。