10.72 __attribute__((visibility("visibility_type"))) 変数属性

この変数属性は、ELF のシンボルの可視性に作用します。

この属性は、ARM コンパイラでサポートされている GNU コンパイラの拡張機能です。

構文

__attribute__((visibility("visibility_type")))
visibility_type は、以下のいずれかになります。
デフォルト
シンボルに想定される可視性は他のオプションによって変更される場合があります。default の可視性は、このような変更よりも優先されます。default の可視性は、外部リンケージに対応します。
hidden
シンボルはダイナミックシンボルテーブルには配置されません。そのため、他の実行可能ファイルや共有ライブラリが直接参照することはできません。関数ポインタを使用した間接参照は可能です。
internal
プロセッサ固有のアプリケーションバイナリインタフェース(psABI)で別途指定されない限り、internal の可視性とは、関数が決して他のモジュールから呼び出されないことを意味します。
protected
シンボルはダイナミックシンボルテーブルに配置されますが、それを定義しているモジュール内の参照は、ローカルシンボルにバインドされます。つまり、このシンボルが別のモジュールによってオーバーライドされることはありません。

使用法

この属性は、default の可視性を指定する場合を除き、暗黙的に外部リンケージが割り当てられるような宣言での使用が想定されています。
この属性を C および C++ の関数と変数に適用できます。C++ では、 クラス 構造体 共用体 、および 列挙 型、および ネームスペース 宣言に適用することもできます。

int i __attribute__((visibility("hidden")));
関連する参考文書
10.53 __attribute__((visibility("visibility_type"))) 関数属性
8.8 --arm_linux
8.196 --visibility_inlines_hidden
8.98 --hide_all、--no_hide_all
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.