関数宣言内でのストレージ クラス指定子の使用
関数宣言で、static または extern のストレージ クラスの指定子を使用できます。 関数には常にグローバル有効期間があります。
Microsoft 固有の仕様 →
内部レベルでの関数宣言は、外部レベルでの関数宣言と同じ意味になります。 これは、関数がローカル スコープで宣言されていても、その宣言位置から翻訳単位の残り全体で可視になることを意味しています。
END Microsoft 固有の仕様
関数の表示規則は、次のように、変数の規則とは若干異なります。
static として宣言された関数は、定義されているソース ファイル内でのみ表示されます。 同じソース ファイル内の関数は static 関数を呼び出すことができますが、他のソース ファイルの関数は名前で static 関数に直接アクセスすることはできません。 異なるソース ファイルにある同じ名前の別の static 関数は、競合することなく宣言できます。
extern として宣言された関数は、(後で static のような関数を再宣言しない場合) プログラムのすべてのソース ファイルで参照されます。 どの関数も extern 関数を呼び出すことができます。
ストレージ クラスの指定子を省略する関数宣言は既定で extern です。
Microsoft 固有の仕様 →
Microsoft では、静的として extern ID を再定義できます。
END Microsoft 固有の仕様