インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

fvisibility

グローバルシンボルのデフォルトの可視属性またはファイル内のシンボルの可視属性を指定します。

構文

Linux* および macOS*:

-fvisibility=keyword

-fvisibility-keyword=filename

Windows*:

なし

引数

keyword

可視属性の設定を指定します。設定可能な値は以下のとおりです。

default

可視属性を default に設定します。

extern

可視属性を extern に設定します。

hidden

可視属性を hidden に設定します。

internal

可視属性を internal に設定します。

protected

可視属性を protected に設定します。この値は、macOS* システムでは利用できません。

filename

可視属性を設定するシンボルのリストを含むファイルのパス名。シンボルは空白 (スペース、タブ、または改行) で区切られていなければなりません。

デフォルト

-fvisibility=default

コンパイラーは、シンボルの可視属性を default に設定します。

説明

このオプションは、グローバルシンボルのデフォルトの可視属性 (-fvisibility=keyword) またはファイル内のシンボルの可視属性 (-fvisibility-keyword=filename) を指定します。

ファイル内のシンボルの可視属性については、-fvisibility=keyword よりも -fvisibility-keyword=filename の設定が優先されます。

オプション

説明

-fvisibility=default
-fvisibility-default=filename

シンボルの可視属性を default に設定します。ほかのコンポーネントはシンボルを参照したり、そのシンボル定義を別のコンポーネントの同じ名前の定義で上書き (プリエンプト) できます。

-fvisibility=extern
-fvisibility-extern=filename

シンボルの可視属性を extern に設定します。シンボルは別のコンポーネントで定義されているかのように扱われます。また、シンボルは別のコンポーネントの同じ名前の定義で上書きできます。

-fvisibility=hidden
-fvisibility-hidden=filename

シンボルの可視属性を hidden に設定します。ほかのコンポーネントは、直接、シンボルを参照できません。ただし、間接的にアドレスをほかのコンポーネントに渡すことはできます。

-fvisibility=internal
-fvisibility-internal=filename

シンボルの可視属性を internal に設定します。シンボルは、自身が定義されているコンポーネント以外から、直接的にも間接的にも参照することはできません。影響を受ける関数は、別のモジュールから (関数ポインターを介しても) 呼び出すことはできません。

-fvisibility=protected
-fvisibility-protected=filename

シンボルの可視属性を protected に設定します。これは、ほかのコンポーネントはシンボルを参照できますが、別のコンポーネントにある同じ名前の定義によってオーバーライドできないことを意味します。この値は、macOS* システムでは利用できません。

-fvisibility オプションがコマンドラインで複数指定された場合は、最後の指定がほかよりも優先されます。

シンボルが複数の可視ファイル (filename) にある場合は、最も可視属性の低いものが優先されます。

次の項目は、可視属性設定の優先順を示しています (可視属性が高いものから低いものにリストしています)。

extern 可視属性は、関数のみに適用できることに注意してください。変数シンボルが extern として指定された場合、default と想定されます。

IDE オプション

Visual Studio*: なし

Eclipse*: [Data (データ)] > [Default Symbol Visibility (デフォルトのシンボル可視属性)]

Xcode*: [Data (データ)] > [Default Symbol Visibility (デフォルトのシンボル可視属性)]

代替オプション

なし

prot.txt というファイルにシンボル a、b、c、d、および e が含まれています。次の例について考えてみます。

-fvisibility-protected=prot.txt

このオプションは、ファイルのすべてのシンボルに protected 可視属性を設定します。各シンボルの宣言で fvisibility=protected を宣言した場合と同じです。