有大量帖子解释了为什么显式执行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;
}
哪一个是更好的练习,是否有一个特定的理由去做另一个?
答案 0 :(得分:4)
在你的具体情况下它没有区别,但是写一个好习惯:
void foo(void)
{
因为可能有一段时间你编写一个函数体而没有预先单独的原型,这可以作为原型,而void foo() {
则没有。
答案 1 :(得分:4)
带有空括号的旧式函数声明和定义是一个过时的特性(N1570 6.11.6,6.11.7)。几乎没有任何理由可以使用它们。
始终如一地使用(void)
,而不是()
。