次の方法で共有


ストレージ クラス

関数定義のストレージ クラスの指定子は extern 関数を 静的 のストレージ クラス指定します。

構文

  • 関数の定義 :
    宣言指定子の opt 属性 seqopt 宣言子リストの 複合ステートメント opt の宣言

    seq 属性 は /* */Microsoft 仕様です。

  • 宣言指定子 :
    ストレージ クラス指定子の宣言指定子 opt

    型指定子の宣言指定子 opt

    宣言型修飾子の指定子 opt

  • ストレージ クラス指定子 : 関数定義の /* */
    extern

    static

関数定義が ストレージ クラス指定子 がない場合ストレージ クラスは extern になります。extern として関数を明示的に宣言できますが必須ではありません。

関数の宣言が ストレージ クラス指定子 extern  が含まれている場合は識別子はファイル スコープで参照できるどの識別子の宣言と同じリンケージがあります。ファイル スコープの宣言が表示されている場合識別子は外部リンケージがあります。識別子がファイルの範囲 ストレージ クラス指定子が ない場合識別子は外部リンケージがあります。外部リンケージが識別子の各インスタンスが同じオブジェクトまたは関数を表示することを意味します。有効期間範囲表示とリンク をリンクする方法の詳細については" " およびスコープを格納します。

extern 以外のストレージ クラスの指定子とブロック スコープの関数宣言はエラーを生成します。

静的 のストレージ クラスと関数を定義するソース ファイルにのみ表示されます。extern のストレージ クラスを明示的または暗黙的に指定されるか他の関数はすべてプログラムのすべてのソース ファイルで表示されます。 静的 のストレージ クラスが必要な場合は関数の宣言の最初の出現 (存在する場合) と関数定義で宣言する必要があります。

Microsoft 固有の仕様 →

Microsoft 拡張機能を有効にすると最初にストレージ クラスの宣言された関数 (または) extern のストレージ クラスと関数定義が同じソース ファイルに含まれている場合定義が明示的に 静的 のストレージ クラスを指定する場合は 静的 のストレージ クラスが用意されています。

/Ze コンパイラ オプションを使用してコンパイルする場合extern でキーワードを使用してブロック内で宣言された関数とグローバル表示があります。これは /Za でコンパイルする場合は true ではありません。この機能はソース・コードの移植性を考慮事項に依存させないでください。

終了 Microsoft 固有の仕様→

参照

関連項目

C 関数の定義