C++相談室 part51
■ このスレッドは過去ログ倉庫に格納されています
0231204
2006/07/22(土) 19:29:00実体が複数作られるのは避けたいため、extern 宣言をしようと思います。
// hoge.h (インクルードガード済み)
extern const int HOGE = 3;
struct HOGESTRUCT {
int array[HOGE];
};
今、このファイルを2つの cpp からインクルードすると、HOGE に関して重複定義のリンクエラーが起きました。
// hoge.h
extern const int HOGE;
のように、ヘッダ内では宣言だけにして、
// a.cpp
const int HOGE = 3;
のように、cpp 内で、HOGE の値を定義したのですが、
hoge.h のHOGESTRUCT の宣言時に HOGE の値が未知なため、array の宣言がうまく行きません。
extern をはずしてしまうと、HOGE の実体が複数作られておいしくありません。
これを解決するには、#define マクロを用いるか、enum ハックを行う、以外に方法はありませんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています