Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

2.2 リンカースコープ指定子

次の宣言指定子は、extern シンボルの宣言と定義を隠すのに役立ちます。これらの指示子を使うと、リンカースコープのマップファイルは使用しなくてすみます。また、コマンド行で –xldscope を指定して、変数スコープのデフォルト設定を制御することもできます。詳細は、-xldscope={v}を参照してください。

表 2-2  宣言指定子
意味
__global
シンボルは大域リンカースコープを持ち、このリンカースコープはもっとも制限の少ないリンカースコープです。シンボルに対する参照はすべて、シンボルを定義する最初の動的モジュール内の定義に結合します。このリンカースコープは、extern シンボルの現在のリンカースコープです。
__symbolic
シンボルはシンボリックリンカースコープを持ち、このリンカースコープは大域リンカースコープよりも制限されたリンカースコープです。リンクしている動的モジュール内のシンボルに対する参照はすべて、モジュール内に定義されたシンボルに結合します。モジュールの外側では、シンボルは大域と同じです。このリンカースコープはリンカーオプション -Bsymbolic に対応します。リンカーの詳細については、ld(1) を参照してください。
__hidden
シンボルは隠蔽リンカースコープを持ちます。隠蔽リンカースコープは、シンボリックリンカースコープや大域リンカースコープよりも制限されたリンカースコープです。動的モジュール内の参照はすべて、そのモジュール内の定義に結合します。シンボルはモジュールの外側では認識されません。

オブジェクトまたは関数は、より制限された指示子で再宣言することはできますが、制限のよりゆるやかな指示子で再宣言することはできません。シンボルは一度定義したら、異なる指示子で宣言することはできません。

__global はもっとも制限の少ないスコープ、__symbolic はより制限されたスコープ、__hidden はもっとも制限の多いスコープです。