外部リンケージ
ID のファイル スコープ レベルの最初の宣言で static ストレージ クラス指定子を使用していない場合、オブジェクトに外部リンケージがあります。
関数の ID の宣言に <ストレージ クラス指定子> がない場合、そのリンケージは、<ストレージ クラス指定子> extern で宣言されている場合とまったく同じように決定されます。 オブジェクトの ID の宣言にファイル スコープがあり、<ストレージ クラス指定子> が含まれていない場合、リンケージは外部になります。
外部リンケージを持つ識別子の名前は、外部リンケージを持つ同じ名前の他の宣言で指定されるものと同じ関数またはデータ オブジェクトを指定します。 2 つの宣言を同じ翻訳単位または異なる翻訳単位に配置できます。 オブジェクトまたは関数にグローバル有効期間もある場合、オブジェクトまたは関数はプログラム全体で共有されます。