C言語学習ポータル(無料版) 学習コンテンツ つまずきとエラー グローバル変数の乱用

🧩 関数とスコープ

グローバル変数の乱用

どんなときに起きるか

「どこで値が変わったのか分からない」バグが出ます。関数を単体で見ると正しいのに、組み合わせると壊れます。同名の定義が複数ファイルにあると error: redefinition of 'count' やリンク時の multiple definition of 'count'。

なぜそうなるのか

グローバル変数はどの関数からも書き換えられるため、変更経路を追えません。関数の入力と出力が引数・戻り値に表れないので、テストも再利用も難しくなります。

直し方・再発防止

データは引数で渡し、結果は戻り値で返します。まとまった状態は構造体1つにして持ち回ります。そのファイル内だけで使う変数には static を付けて外から見えなくします(ヘッダには定義を書かず、必要なら extern 宣言だけ置きます)。

アプリでしっかり学ぶ(無料・登録不要) つまずき一覧へ

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH