在C中声明函数时,应该设置一个原型,在该原型中不需要编写参数名称。只是它的类型就足够了。
void foo(int, char);
我的问题是,还包括参数名称是一个好习惯吗?
答案 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和编辑器会从头文件中提取原型信息,并在输入时提供参数信息作为提示。如果名称可用,这有助于更快地编写代码(并且可以帮助避免一些错误)。