在 c 中:func(void) 与 func() [重复]

问题描述 投票:0回答:2

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

编辑:我刚刚发现了一个重复的(back-dupe?它首先出现)问题,C void arguments,它有更多的答案和解释。

c function void lint pc-lint
2个回答
37
投票

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

int init (void)
{
    return 1;
}

这和定义不一样

int init ()
{
    return 1;
}

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


7
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.