const についての質問をしたものです。色々お返事ありがとうございます。
実体が複数作られるのは避けたいため、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 ハックを行う、以外に方法はありませんでしょうか?