extern | Programming Place Plus 用語集

トップページ用語集

名称 🔗

解説 🔗

いくつかのプログラミング言語において、おもに「外部 (external)」に関係があることを示すために用いられるキーワードです。

C言語の場合 🔗

C言語では、外部結合を持つ変数関数宣言時に externキーワードを付けることで、ほかの翻訳単位からアクセスできるようになります。関数の場合は extern を省略しても同じ意味になります。

extern int x; // 他の翻訳単位で定義されている変数xを参照
extern void f(void); // 他の翻訳単位で定義されている関数fを参照

extern は、static や typedef などとともに記憶域クラス指定子に分類されます。このため、extern記憶域クラス指定子とか、省略して extern指定子と呼ばれることもあります。

詳細は、C言語編「複数ファイルによるプログラム」を参照してください。

C++ の場合 🔗

C++ でもC言語と同じように、外部結合を持つ変数や関数の宣言に使用できます。

詳細は、新C++編「分割コンパイル」「メモリとオブジェクト」を参照してください。

また、extern "C" のような記述により、C++ の名前修飾(名前マングリング)を無効にして、C言語で書かれた関数を呼び出すことができます。

extern "C" {
    void f(void);   // C言語で書かれた関数fを参照
}

f(); // C++ から呼び出し

詳細は、C++編「マクロとその代替」を参照してください。

このほか、テンプレートの明示的インスタンス化の宣言のための、extern template という使い方があります。

詳細は、新C++編「テンプレートのインスタンス化と特殊化」を参照してください。

参考リンク 🔗

更新履歴 🔗


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る