staticの使い方2〜関数外静的変数〜


目次に戻る


先日はstaticを関数内のローカル変数に対して用いることで、内容を保持しておくことがで きる関数内静的変数として変数を宣言できる事を紹介した。
今日は関数外でstaticをつけて変数を宣言した時の動作を紹介する。
 
通常ならば、関数の外で宣言した変数は「グローバル変数」「外部変数」「大域変数」 とよばれ、どの関数からも参照できる事になっている。これは便利ではあるけれども、外 部変数の数が多くなると管理がしっかりできず発見しづらいバグを生む原因として忌み嫌 われている。しかし、どう考えても外部変数を使った方が効率がよいという場面は多々あ る。そういう場合は当然の事ながら積極的に外部変数が利用されている。
 
staticを外部変数を宣言する時に使うと、その変数の有効範囲をファイル内のみ有効 と狭める事ができます。この事で、外部変数の誤使用をある程度防ぐ事ができます。
 
/* main.c */

static int sGStatus;     /* 他のファイルでは使って欲しくないので
          &nb sp;                  静的変数として宣言した */

int main()
{
    sGStatus = 100;
         :
         :
    return 0;
}

/* test.c */

extern int sGStatus;     /* リンク時にエラーが発生する。 */

     :
     :
     :



目次に戻る