在c:func(void)与func()

当C函数不接受任何参数时,是否必须通过语言规则使用“void”参数声明/定义它? 当参数列表中没有任何内容时,PC-Lint似乎有问题,我想知道它是否是我不知道的语言语法中的东西。

编辑:我刚刚发现了一个重复的(后面的傻瓜?它首先出现)问题, C void参数 ,它有更多的答案和解释。

void表示函数不接受任何参数。 例如,

int init (void) { return 1; } 

这与定义不同

 int init () { return 1; } 

因为在第二种情况下,编译器不会检查函数是否真的被调用而根本没有参数; 相反,将接受具有任意数量参数的函数调用,而不会发出任何警告 (这仅用于与旧式函数定义语法(ANSI之前的兼容性)实现)。

C中的IIRC func(void)将声明一个不带参数的函数,而func()声明一个将接受任意数量参数的函数。 我相信后者是来自ANSI C之前的工件。

根据Wikipedia这里,声明func()基本上声明了函数“没有关于参数的信息”。