機能 |
記憶クラス指定子の一つで、外部結合を表す。 外部結合とは、プログラム全体の構成(別のファイルを含む)の中で変数や関数を参照することを表す。 外部結合は実体(記憶領域)を持っていない。代わりに参照元が実体を持っている。 関数は記憶クラス指定子を省略するとexternを宣言した場合と同等となる。 |
---|---|
定義 | extern [宣言指定子]option 識別名 ; |
実装例 |
/* ソースファイルA */ #include <stdio.h> extern int func1(void); /* ソースファイルAの関数と外部結合 */ int func2(void); /* ソースファイルBの関数と外部結合 */ /* externを省略しても同様に外部結合となる */ int main(void) { extern int a, b; /* externを指定した変数の宣言 */ /* aはソースファイルAの変数と外部結合 */ /* bはソースファイルBの変数と外部結合 */ printf("a=%d\n", a); /* aの値を表示 */ printf("b=%d\n", b); /* bの値を表示 */ printf("func1=%d\n", func1()); /* func1の戻り値を表示 */ printf("func2=%d\n", func2()); /* func2の戻り値を表示 */ return 0; } int a=1; /* グローバル変数 */ int func1(void) /* 関数 */ { return 10; } |
/* ソースファイルB */ int b=2; /* 別ファイルのグローバル変数 */ int func2(void) /* 別ファイルの関数 */ { return 5; } |
|
実行結果 |
a=1 b=2 func1=10 func2=5 |
extern