発言数が少ないようなのでネタ振りなど。
http://kmaebashi.com/programmer/pointer.html
では GLOBAL int global_variable; を推奨されているようですが、私は反対です。
hoge.h の中では必ず
extern int global_variable;
と書くべきだと考えます。
hoge.c の中で
#include "hoge.h"
int global_variable;
と書いても ISO 文法上何の問題も無いので。
もし仮に hoge.c の中で
#define GLOBAL_VARIABLE_DEFINE
#include "hoge.h"
#include "piyo.h"
とかやっちゃうと hoge piyo 両方の大域変数が定義されてしまいます。
#undef GLOBAL_VARIABLE_DEFINE しますか?めんどくさいです。
ヘッダ中から別ヘッダを #include しているとそもそも分離不可能だし。
globals.c とか作るのは個人的には嫌っています。
>わざわざ同一の記述を複数の個所で行なうのは間違いのもとである
こと自体は御意なのです。でも、
関数(原型)宣言と関数定義を両方書く必要があるなら、
大域変数の宣言と定義を両方書いても大差ないぢゃん、とか思う今日この頃。
皆様はどうお考えですか?