どのような状況で、外部変数(つまり、グローバル変数)を使用することが正当であると思いますか?
たとえば、一度に1つの状態が指定されているシステムで、この状態を外部に保存することは適切でしょうか?
次の場合、extern
グローバル変数が必要になることがあります。
プログラムの状態の要素(つまり、グローバル変数の内容)を共有する必要があり、かつ
これらの要素を静的クラスメンバーとして管理することはできません(優先的には、プライベートまたは保護されたもの)。
それをシングルトンにカプセル化するオーバーヘッドを許容することはできません。
グローバルを使用する代わりに、その状態を処理するオブジェクト/関数を互いに知り、直接通信する簡単な方法はありません。
この状態を必要とするクラス/関数を同じコンパイル単位に再グループ化することは望ましくありません(少なくとも、グローバル変数static
を作成し、表示を少なくすることで、予期しない副作用のリスクを減らすことができます)。
または、extern volatile
同じ理由でグローバル変数ですが、それがシステム状態に関するものである場合(ハードウェアによって使用される固定位置など)