C言語のおさらい

詳説C++【第2版】標準C++完全理解を読んだときに書いたメモの一部

外部参照

関数ローカル

関数の内部で宣言,定義された型名,変数名,const定数名は,その関数の中でのみ有効.

大域スコープ

関数の外で定義された型名,列挙定数名,変数名,const定数名,関数名自体など.

外部リンケージ

上記の大域の識別子の内,「実体」をもっている名前.
すなわち,関数名と変数名,const定数名は,他のソースファイルから参照できる.

extern 返却値名 関数名(仮引数リスト){ ... }
extern 型名 大域変数名 = 初期化値;

外部リンケージは省略可能なので,つけなければ自動的に外部リンケージを持つ.

外部参照宣言

参照する側の宣言.
ソースファイルで宣言されていない外部の関数名や変数名を使うことをコンパイラに伝える(プロトタイプ宣言).
大域変数を宣言するとき,初期化し忘れると,外部参照と全く同じ形になる.
どこか1か所で必ず初期化を伴った宣言をして実体を与えておかないといけない.

返却値名 関数名(仮引数リスト);
extern 型名 大域変数名;