(1) 外部定義 / external definition
定義と初期化
1 2 3 4 5 |
int x = 0; int main(void) { /* 中略 */ } |
(2) 外部宣言 / extern declaration
翻訳単位外(ファイルの外)で定義したグローバル変数を参照する。メモリは割り当てない。
1 2 3 4 5 |
extern int x; int main(void) { /* 中略 */ } |
(3) 仮定義 / tentative definition
どこかに外部定義があれば外部宣言としてふるまい、なければ外部定義としてふるまう。
したがって同じ名前の仮定義が複数存在しても、ひとつのメモリ領域を参照する。
1 2 3 4 5 |
int x; int main(void) { /* 中略 */ } |
上記のソースコードだけでは『定義』であるか『宣言』であるか確定できない。