将参数名称放在C函数原型中?

时间:2011-11-17 21:53:48

标签: c function-prototypes

在C中声明函数时,应该设置一个原型,在该原型中不需要编写参数名称。只是它的类型就足够了。

     void foo(int, char);

我的问题是,还包括参数名称是一个好习惯吗?

3 个答案:

答案 0 :(得分:30)

是的,即使在原型中也可以为参数命名。

您通常会在头文件中包含所有原型,并且标题可能是您的用户唯一可以检查的内容。因此,拥有有意义的参数名称是API的第一级文档。

同样,关于函数的功能(当然不是它们的实现方式)的评论应该与标题一起放在标题中。

编写良好的头文件可能是您库中最重要的部分!


作为好奇的一面,参数的constness是一个实现细节。因此,如果您不在实现中改变参数变量,const放入实现中:

/* Header file */

/* Computes a thingamajig with given base
 * in the given number of steps.
 * Returns half the thingamajig, or -1 on error.
 */
int super_compute(int base, int steps); 

/* implementation file */

#include "theheader.h"

int super_compute(const int base, int steps)
{
  int b = 2 * base;
  while (--steps) { b /= 8; } /* no need for a local variable :-) */
  return -1;
}

答案 1 :(得分:7)

我绝对建议包含参数的名称。如果您正在编写库,那么对于那些使用您的库的人来说,能够从头文件中的原型中收集函数的功能肯定是有用的。例如,考虑memcpy。如果没有参数的名称,您就会知道哪个是源,哪个是目标。最后,当您复制函数定义以使其成为原型时,包含名称比删除它们更容易。如果保留名称,则只需在末尾添加分号。

答案 2 :(得分:5)

某些IDE和编辑器会从头文件中提取原型信息,并在输入时提供参数信息作为提示。如果名称可用,这有助于更快地编写代码(并且可以帮助避免一些错误)。