多くの人々がこの主題について混乱しています。グローバル変数の定義は次のとおりです。
プログラムのどこからでもアクセスできるもの。
これは、キーワードで宣言されているファイルスコープ変数とは異なりますstatic
。これらはグローバル変数ではなく、ローカルのプライベート変数です。
int x; // global variable
static int y; // file scope variable
void some_func (void) {...} // added to demonstrate that the variables above are at file scope.
グローバル変数を使用する必要がありますか?それがうまくいくいくつかのケースがあります:
それ以外の場合は、グローバル変数を使用しないでください。そうする理由はありません。代わりに、ファイルスコープ変数を使用します。これはまったく問題あり。
特定のタスクを実行するように設計された独立した自律的なコードモジュールの作成に努める必要があります。これらのモジュール内では、内部ファイルスコープ変数はプライベートデータメンバーとして存在する必要があります。この設計方法はオブジェクト指向として知られており、優れた設計として広く認知されています。