いくつかのプログラミング言語において、おもに「外部 (external)」に関係があることを示すために用いられるキーワードです。
C言語では、外部結合を持つ変数や関数の宣言時に externキーワードを付けることで、ほかの翻訳単位からアクセスできるようになります。関数の場合は extern を省略しても同じ意味になります。
extern int x; // 他の翻訳単位で定義されている変数xを参照
extern void f(void); // 他の翻訳単位で定義されている関数fを参照
extern は、static や typedef などとともに記憶域クラス指定子に分類されます。このため、extern記憶域クラス指定子とか、省略して extern指定子と呼ばれることもあります。
詳細は、C言語編「複数ファイルによるプログラム」を参照してください。
C++ でもC言語と同じように、外部結合を持つ変数や関数の宣言に使用できます。
詳細は、新C++編「分割コンパイル」「メモリとオブジェクト」を参照してください。
また、extern "C"
のような記述により、C++ の名前修飾(名前マングリング)を無効にして、C言語で書かれた関数を呼び出すことができます。
extern "C" {
void f(void); // C言語で書かれた関数fを参照
}
(); // C++ から呼び出し f
詳細は、C++編「マクロとその代替」を参照してください。
このほか、テンプレートの明示的インスタンス化の宣言のための、extern template
という使い方があります。
詳細は、新C++編「テンプレートのインスタンス化と特殊化」を参照してください。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |