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

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

void foo(int, char); 

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

是的,即使在原型中也可以将参数命名为良好的做法。

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

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

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


好奇的是,参数的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; } 

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

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