[84] Re:GLOBAL
投稿者:kit
2007/02/20 02:13:25
> hoge.h の中では必ず
> extern int global_variable;
> と書くべきだと考えます。
僕も自分で一から書くソフトウェアでは、
GLOBAL のようなマクロは使わず、extern 宣言と、変数の
実体の定義と 2回書いてます。
手間と言えば手間なんですが、グローバル変数にするような
ものは、必ず初期化する趣味なので、GLOBAL みたいな簡単な
マクロでは対処できなかったりします (たとえ 0 や NULL で
初期化する場合でも、明示的に初期化するスタイルを採って
ます)。
また、そもそもグローバル変数なんてほとんど使わないので、
手間的にはたいしたことないです。昔風のプログラムなら
グローバル変数にする場合も、たいていは accessor/mutator
関数でラップして見かけは関数にしてしまうことがほとんど
です。プロファイルとって効率が問題になるようだったら、
あとで実装をマクロに直すだけですから、最初からグローバル
変数として見せる必要があるとは思えません。逆に、最初は
変数で済んでいたものが、後になって変更時に手続きをフック
したくなることは結構あります。(単に最初の仕様検討がいい
加減なだけだって話もありますが… ^^;)
> globals.c とか作るのは個人的には嫌っています。
同じく globals.c みたいなものは作りません。
こういうのって、モジュール分けの原則に反してますよね。