void函数参数在定义和声明中?还是只有一个?

时间:2016-10-11 01:55:46

标签: c gcc

有大量帖子解释了为什么显式执行foo(void)优于foo(),因为它指定没有函数参数而不是未知数量。

但是,我似乎无法找到在头文件声明源文件定义中放置void的最佳做法,例如:

foo.h中

void foo(void);

foo.c的

void foo(void)
{
     return;
}

OR

foo.h中

void foo(void);

foo.c的

void foo()
{
     return;
}

哪一个是更好的练习,是否有一个特定的理由去做另一个?

2 个答案:

答案 0 :(得分:4)

在你的具体情况下它没有区别,但是写一个好习惯:

void foo(void)
{

因为可能有一段时间你编写一个函数体而没有预先单独的原型,这可以作为原型,而void foo() {则没有。

答案 1 :(得分:4)

带有空括号的旧式函数声明和定义是一个过时的特性(N1570 6.11.6,6.11.7)。几乎没有任何理由可以使用它们。

始终如一地使用(void),而不是()