1

.h ファイルを使用してすべてのグローバル変数を 1 つのファイルにまとめ、すべてのファイルが同じ値にアクセスできるようにしています。しかし、私は const int を持っています。どこでそれを inisilize するべきでしょうか?

.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?
4

2 に答える 2

3

const変数も (デフォルトで)であるため、ヘッダーが含まれるファイルstaticごとに一意の変数があります。.cpp

そのため、ある TU で定義されたインスタンスはソース ファイルで初期化したインスタンスと同じではないため、通常は「その場で」初期化する必要があります。

于 2013-06-17T03:07:41.943 に答える
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;
于 2013-06-17T03:07:27.370 に答える