在c:func(void)与func()

时间:2009-07-22 08:37:37

标签: c function void lint

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

修改:我刚发现了一个重复的(背面的?它首先出现)问题,C void arguments,它有更多的答案和解释。

2 个答案:

答案 0 :(得分:34)

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

int init (void)
{
    return 1;
}

这与定义

不同
int init ()
{
    return 1;
}

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

答案 1 :(得分:7)

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

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