【发布时间】:2013-10-22 09:04:01
【问题描述】:
在 C/C++ 中显式原型化本地函数有什么好处,而不是在使用之前定义函数?本地我的意思是函数仅在其源文件中使用。一个例子是这样的:
#include "header.h"
static float times2(float x){
return 2*x;
}
static float times6(float x){
return times2(3*x);
}
int main(void){
// Other stuff ...
float y = times6(1);
// Other stuff ...
}
相对于这个:
#include "header.h"
// Local function prototypes
static float times2(float);
static float times6(float);
// Main
int main(void){
// Other stuff ...
float y = times6(1);
// Other stuff ...
}
// Local functions definition
static float times2(float x){
return 2*x;
}
static float times6(float x){
return times2(3*x);
}
我个人更喜欢使用第一个选项,因为要编写的代码更少并且(对我而言)文件更易于阅读,但现在我想知道是否有任何技术原因更喜欢第二个选项。
编辑:我在 times2() 和 times6() 中添加了 static,请参阅@Gangadhar 答案和下面的 cmets。
【问题讨论】:
-
唯一的技术原因是它们是否相互引用。除此之外,这一切都归结为风格。
-
你应该把你的“本地人”放到一个匿名的命名空间中,这样他们就不会得到外部链接。
-
@nijansen:你能发表你的评论作为答案吗? (您是第一个指出交叉引用案例的人,也是唯一一个明确指出否则没有技术理由使用选项 1 的人。对我来说,这就是问题的答案。)
-
@Milo 我已经添加了一个答案,但我仍然希望鼓励您选择您认为最有帮助的答案。
标签: c++ c function-prototypes