グローバルシンボルのデフォルトの可視属性またはファイル内のシンボルの可視属性を指定します。
Windows: なし
Linux: [Data (データ)] > [Default Symbol Visibility (デフォルトのシンボル可視属性)]
Mac OS: [Data (データ)] > [Default Symbol Visibility (デフォルトのシンボル可視属性)]
IA-32、インテル(R) EM64T、インテル(R) Itanium(R) アーキテクチャー
Linux* および Mac OS*: | -fvisibility=keyword -fvisibility-keyword=file |
Windows*: | なし |
keyword | 可視属性の設定を指定します。設定可能な値は以下のとおりです。 | |
default | 可視属性を default に設定します。 | |
extern | 可視属性を extern に設定します。 | |
hidden | 可視属性を hidden に設定します。 | |
internal | 可視属性を internal に設定します。 | |
protected | 可視属性を protected に設定します。 |
file | 可視属性を設定するシンボルのリストを含むファイルのパス名。シンボルは空白 (スペース、タブ、または改行) で区切られていなければなりません。 |
-fvisibility=default | コンパイラーは、シンボルの可視属性を default に設定します。 |
このオプションは、グローバルシンボルのデフォルトの可視属性 (-fvisibility=keyword) またはファイル内のシンボルの可視属性 (-fvisibility-keyword=file) を指定します。file で指定されるシンボルでは、2 番目の構文形式は 1 番目よりも優先されます。
注
可視属性を明示的に指定する際はどちらか 1 つの方法のみを使用してください。宣言で設定するか、ファイル内のシンボル名を指定して設定します。両方を同時に使用することはできません。
オプション | 説明 |
---|---|
-fvisibility=default -fvisibility-default=file |
シンボルの可視属性を default に設定します。他のコンポーネントはシンボルを参照でき、そのシンボル定義を別のコンポーネントの同じ名前の定義で上書き (プリエンプト) できます。 |
-fvisibility=extern -fvisibility-extern=file |
シンボルの可視属性を extern に設定します。シンボルは別のコンポーネントで定義されているかのように扱われます。また、シンボルは別のコンポーネントの同じ名前の定義で上書きできます。 |
-fvisibility=hidden -fvisibility-hidden=file |
シンボルの可視属性を hidden に設定します。他のコンポーネントは、直接、シンボルを参照できません。ただし、アドレスを間接的に他のコンポーネントに渡すことができます。 |
-fvisibility=internal -fvisibility-internal=file |
シンボルの可視属性を internal に設定します。直接的にも間接的にもシンボルが定義されたコンポーネントの外部から参照できません。 |
-fvisibility=protected -fvisibility-protected=file |
シンボルの可視属性を protected に設定します。他のコンポーネントはシンボルを参照できますが、別のコンポーネントにある同じ名前の定義でシンボル定義を上書きできません。 |
-fvisibility オプションがコマンドラインで複数指定された場合は、最後の指定が他よりも優先されます。
シンボルが複数の可視ファイル にある場合は、最も可視属性の低いものが優先されます。
次の項目は、可視属性設定の優先順を示しています (可視属性が高いものから低いものにリストしています)。
extern 可視属性は、関数のみに適用できることに注意してください。変数シンボルが extern として指定された場合、default と想定されます。
なし
prot.txt というファイルにシンボル a、b、c、d、および e が含まれています。次の例について考えてみます。
-fvisibility-protected=prot.txt
このオプションは、ファイルのすべてのシンボルに protected 可視属性を設定します。各シンボルの宣言で fvisibility=protected を宣言した場合と同じです。
アプリケーションの最適化: シンボルの可視属性オプション (Linux* および Mac OS*)