在函数声明中包含参数名称与不包含参数名称之间的区别是什么?

时间:2010-11-10 23:19:49

标签: c++ function declaration

我记得以前读过在函数声明中包含参数名称而不包括参数名称之间的重要性(或缺乏重要性)。但我不记得我读到的是什么,或者我在哪里阅读它。

例如,

void do_something(int *); // No parameter name included, only type.

... VS

void do_something(int * i); // type AND parameter name included.

那么这两个声明之间的区别是什么?感谢您阅读并回答这个可能微不足道的问题。

- 更新 -

好的,所以我读过的东西是来自我的一位老教授的一套风格指南,警告不要在函数定义中包含参数名称而不要在函数中使用参数。

void do_something(int * i) { //code that doesn't use i;} //BAD
void do_something(int *) { //code that doesn't use i;} //OK

5 个答案:

答案 0 :(得分:12)

就编译器而言,没有区别。

但是,添加有意义的参数名称是一种有用的文档形式。

答案 1 :(得分:1)

不同之处在于,如果您选择一个好的参数名称,第二个版本可能更具可读性。没什么可说的; - )

答案 2 :(得分:1)

这些声明之间没有技术差异。如果你改为

void accumulate_stats(int * count);

或类似描述性的东西,这将是自我文档的改进。

答案 3 :(得分:0)

在前瞻性声明中,应该没有区别。它们都将描述呼叫的相同内存布局,因此它们应完全可互换。

答案 4 :(得分:0)

对于前瞻性声明,它没有任何区别。

在实际定义中,不检查没有名称的参数。这是一种在没有UNUSED_PARAM(x)宏或其他一些技巧的情况下获取未使用参数的方法,其唯一目的是关闭编译器。