グローバルシンボルと可視属性

グローバルシンボルは、宣言されたコンパイル単位 (単一ソースファイルとそのインクルード・ファイル) 外で見ることができるシンボルです。C/C++ では、static キーワードのないファイルレベルでの宣言を意味します。次に例を示します。

int x = 5;        // global data definition
extern int y;     // global data reference
int five()        // global function definition
{ return 5; }
extern int four(); // global function reference

最終的なプログラムは、メインプログラムとメインプログラムによって参照されるデータおよび関数の定義を含む複数の共有可能なオブジェクト・ファイル (.so) から構成されます。共有可能なオブジェクトは、他の共有可能なオブジェクトで定義されているデータや関数を参照することもあります。同時に実行している複数のプロセスの仮想メモリーに共有可能なオブジェクトがマップされている場合、物理メモリーにはそのオブジェクトの読み取り専用部分が 1 つだけ存在するため、これらのオブジェクトは共有可能なオブジェクトと呼ばれます。メイン・プログラム・ファイルとそのファイルが参照する共有可能なオブジェクトを、プログラムのコンポーネントと呼びます。

コンパイル単位中の各グローバルシンボル定義や参照には、それらが定義されているコンポーネント以外からの参照方法を制御する可視属性があります。可視属性の値は 5 つあります。

通常、スタティックなローカルシンボル (C/C++ では、ファイルスコープで宣言されているシンボル、またはキーワード static とともに宣言されているシンボル) の可視属性は HIDDEN です。ほかのコンポーネント (または同じコンポーネント内のほかのコンパイル単位) から直接参照することはできませんが、間接的に参照することはできます。

Note icon

可視属性は定義にも参照にも適用されます。シンボル参照の可視属性は、対応する定義にその可視属性が適用されることを意味します。


このヘルプトピックについてのフィードバックを送信

© 1996-2010 Intel Corporation. 無断での引用、転載を禁じます。