グローバル配列変数の宣言時の初期化に関して質問なんですが、
int hoge[2] = {1, 2};
extern hoge[2];
を一文で書く何かいい方法はありませんか?

配列でなければ
#ifdef GLOBAL_DEFINE
#define EXTERN
#define GLOBAL_INIT(x) = x
#else
#define EXTERN extern
#define GLOBAL_INIT(x)
#else
EXTERN int hoge GLOBAL_INIT(1);
とかでいいんですが。。。