在下面的代码中,y用于func()。虽然代码编译,在约定和/或优化方面,是否需要在头文件中声明?如果是这样,我是否可以阻止y出现在包含标题的每个文件中?
//func.h
#ifndef FUNC_H
#define FUNC_H
int func(const int x);
#endif // FUNC_H
//
//func.cpp
const int y = 5;
int func(const int x)
{
return x + y;
}
//
答案 0 :(得分:1)
不,如果y
仅用于func.cpp,那么就不需要(在约定或性能方面)在头文件中声明它。你有什么看起来很好。
一个常量隐式具有内部链接,因此只能在func.cpp中访问。
您可以考虑将其设为constexpr
。
如果y
仅用于func()
,您可以考虑在func()
内声明它。一世
认为假设一个全局变量将表现更好是过早优化。
答案 1 :(得分:0)
一个选项
在头文件中有声明
extern const int y;
在其中一个源文件中定义变量
const int y =5;