在c中:func(void)vs.func()

在c中:func(void)vs.func(),c,function,void,lint,C,Function,Void,Lint,当C函数不接受任何参数时,语言规则是否必须用“void”参数声明/定义它? 当参数列表中没有任何内容时,PC Lint似乎有问题,我想知道这是否是语言语法中我不知道的东西 编辑:我刚刚发现了一个重复的问题(back dupe?它是第一个),这个问题有更多的答案和解释。C中的IIRC func(void)将声明一个不带参数的函数,而func()声明的函数将带任意数量的参数。我相信后者是来自ANSI C之前的产物 根据这里的说明,声明func()基本上是声明函数“没有关于参数的信息”。void表示函

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

编辑:我刚刚发现了一个重复的问题(back dupe?它是第一个),这个问题有更多的答案和解释。

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


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

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

int init (void)
{
    return 1;
}
这与定义不同

int init ()
{
    return 1;
}

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

一个函数不接受任何数量的定义为func(…)的参数吗?您认为正确,在K&R C中,参数列表的定义是不同的(而且很糟糕)。但是在C++中(f)与F(空隙)@ NOAMTM一样——函数FUNC(a,b,…)的函数;声明一个C函数,该函数接受一个变量参数列表,因此在某种意义上也可以接受任意数量的参数。