我正在使用.h文件将所有全局变量放在一个文件中,以确保所有文件都可以访问相同的值。但我有一个const int,我想知道我应该把它放在哪里?
·H:
#ifndef globalVar_H
#define globalVar_H
const int MAXCPU;
const int MAXPreBorder;
#endif
的.cpp:
int MAXCPU=12;
int MAXPreBorder=20;
我想我应该在.h文件中声明并在.cpp文件中初始化。但编译说:
error: non-type template argument of type 'int' is not an integral constant expression
如果我在.h文件中初始化。编译器不会抱怨..我想知道这是不是正确的方法?
·H:
#ifndef globalVar_H
#define globalVar_H
const int MAXCPU=12;
const int MAXPreBorder=20;
#endif
的.cpp:
//nothing?
答案 0 :(得分:3)
const
变量也是(默认情况下)static
,因此每个.cpp
文件都有一个唯一的变量,其中包含标题。
因此,您通常希望“就地”初始化它,因为在一个TU中定义的实例将与您在源文件中初始化的实例不同。
答案 1 :(得分:1)
globalVar.h:
#ifndef globalVar_H
#define globalVar_H
extern const int MAXCPU;
extern const int MAXPreBorder;
#endif
globalVar.cpp:
const int MAXCPU = 12;
const int MAXPreBorder = 20;