【发布时间】:2011-07-11 04:31:10
【问题描述】:
我一直认为函数原型必须包含函数的参数及其名称。但是,我只是尝试了一下:
int add(int,int);
int main()
{
std::cout << add(3,1) << std::endl;
}
int add(int x, int y)
{
return x + y;
}
它奏效了!我什至尝试过极其谨慎地编译:
g++ -W -Wall -Werror -pedantic test.cpp
它仍然有效。所以我的问题是,如果你不需要函数原型中的参数名称,为什么这样做如此普遍?这有什么目的吗?和函数的签名有关系吗?
【问题讨论】:
-
我认为如果原型中包含参数名称,可读性会更好。
-
它究竟是如何增加可读性的?
-
在您的情况下,您有两个
int参数,没有名称如何知道是先传入x还是y? -
在具有晦涩参数名称的函数中(如 x 和 y),将它们写在原型中有何不同?
-
add函数中参数的顺序并不重要,并且大多数人已经知道名为“add”的函数会将其参数添加到一起,而不会对值赋予意义,所以名称在这个例子中并不重要。但是考虑像strstr这样的函数。顺序很重要。哪个参数先出现?如果参数具有独特的名称,例如needle和haystack,以及您的编辑器是否会在您编写代码或报告错误时向您显示这些名称,是否更容易记住? 这就是可读性。
标签: c++ naming function-prototypes