C言語 externとは?グローバル変数の使い方

プログラムが大きくなると、複数ファイルによるプログラム作成になります。

別々のファイル間でグローバル変数を使う際は、extern指定子を使います。

(extern “C”について知りたい場合は、こちらのページをご覧ください。)

一般的なグローバル変数の使い方

program1.c

#include <stdio.h>

void show(void);

// グローバル変数(定義・実体)
int idata;

void main(void) {
      show();
}

program2.c

#include <stdio.h>

void show(void);

// グローバル変数(宣言・参照)
extern int idata;

void show(void) {
      idata = 10;
      printf("%d\n", idata);
}

グローバル変数は、”program1.c”で定義されていますが、

extern指定子を使う事により、別ファイルの”program2.c”でも

グローバル変数 idata を使う事ができるようになっています。



グローバル変数の定義・実体は、1箇所のみとなりますが、

グローバル変数の宣言・参照(extern付き)は、複数個所で使用できます。

グローバル変数を限られた関数内だけで使う

program1.c

#include <stdio.h>

void show(void);

// グローバル変数(定義・実体)
int idata;

void main(void) {
      show();
}

program2.c

#include <stdio.h>

void show(void);

void show(void) {
      // グローバル変数(宣言・参照)
      extern int idata;
      idata = 10;
      printf("%d\n", idata);
}

この例の場合は、関数 show の中で extern が使用されているので、

グローバル変数 idata は、ファイル”program2.c”全体で使えるワケではなく、

この関数内でのみ使用できると言う事になります。


以上、グローバル変数の簡単な使い方でした。