通信用語の基礎知識 全国のICカードこれひとつ 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > 仕様・構造 > ソフトウェア > プログラミング言語 > 言語仕様 > 実装定義
__attribute__
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS)
読み:アンダースコア-アンダースコア-アトリビュート-アンダースコア-アンダースコア
外語:__attribute__
品詞:名詞

GCCの拡張機能。関数、変数、型に対して属性を付加するために使われる。

目次
概要

__attribute__に続けて、二重括弧でパラメーターを記述するのが特徴的な書式となっている。

__attribute__ ((パラメーター))

パラメーターには様々なものがあり、カンマ(,)で区切って複数の属性を指定するものもある。

二重括弧でくくるのには理由が存在し、それはGCC以外では、マクロで無視できるようにするためである。複数の引数があっても、括弧でくくってあれば、マクロは一つの引数としてそれを扱うことができ、次のようにして無視することができる。

#ifndef __GNUC__

#define __attribute__(x)

#endif

また、関数などに対する__attribute__機能もさまざまあるが、関数属性は宣言時にのみ指定でき、関数の定義部では使えないので注意が必要である。

特徴

一覧は、6 Extensions to the C Language Familyに記載されている。

Common以外についてはアーキテクチャーごとに定義される。同名のものも多いが、アーキテクチャーによって書式などが異なることもある。多くはCPUのアーキテクチャーごとだが、OSによって定義されるものもある。

また、Function AttributesとVariable Attributesは共通するものも多い。

一覧

以下は、Common(共通)のほか、ARM、Microsoft Windows、x86アーキテクチャーで使われるもののみをリストアップする。

なお、各オプションの名称は前後に__を付けることができる。

Function Attributes

6.31 Declaring Attributes of Functionsに記載されているもの。


Common Function Attributes
alias(x)
aligned(x)
バイト整列の設定
alloc_align
alloc_size
always_inline
artificial
assume_aligned
bnd_instrument
bnd_legacy
cold
const
constructor
constructor(x)
destructor
destructor(x)
deprecated
deprecated(x)
error(x)
warning(x)
externally_visible
flatten
format (archetype, string-index, first-to-check)
printfなどの書式指定文字列と可変長引数群の整合性を、コンパイル時にチェックする機能
format_arg(x)
gnu_inline
hot
ifunc(x)
interrupt
interrupt_handler
leaf
malloc
no_icf
no_instrument_function
no_reorder
no_sanitize_address
no_address_safety_analysis
no_sanitize_thread
no_sanitize_undefined
no_split_stack
noclone
noinline
nonnull(x)
noreturn
externなどで呼び出す関数が、戻らないことを明示する
nothrow
noplt
optimize
pure
returns_nonnull
returns_twice
section(x)
オブジェクトを、指定したセクションxに配置する
sentinel
stack_protect
target(x)
unused
used
visibility(x)
warn_unused_result
weak
weakref
weakref(x)
lower
upper
either

ARM Function Attributes
interrupt
isr
long_call
short_call
naked
pcs
target(x)
'thumb' と 'arm' の強制切り替え

Microsoft Windows Function Attributes
dllexport
dllimport

x86 Function Attributes
cdecl
fastcall
thiscall
ms_abi
sysv_abi
callee_pop_aggregate_return(x)
ms_hook_prologue
regparm(x)
sseregparm
force_align_arg_pointer
stdcall
target(x)

その他

以下アーキテクチャーにも独自の定義がある。

Variable Attributes

6.32 Specifying Attributes of Variablesに記載されているもの。


Common Variable Attributes
aligned(x)
cleanup(x)
common
nocommon
deprecated
deprecated(x)
mode(x)
packed
詰め物を入れない
section(x)
オブジェクトを、指定したセクションxに配置する
tls_model(x)
unused
used
vector_size(x)
バイト単位で変数のベクトル長を定義する
weak

Microsoft Windows Variable Attributes
dllimport
dllexport
selectany
shared

x86 Variable Attributes
ms_struct
gcc_struct

その他

以下アーキテクチャーにも独自の定義がある。

Type Attributes

6.33 Specifying Attributes of Typesに記載されているもの。


Common Function Attributes
aligned(x)
bnd_variable_size
deprecated
deprecated(x)
designated_init
may_alias
char型と同様、他の種類のオブジェクトへの別名として定義される
packed
詰め物を入れない
transparent_union
unused
visibility

ARM Type Attributes
dllimport
notshared

x86 Type Attributes
ms_struct
gcc_struct

その他

以下アーキテクチャーにも独自の定義がある。

Label Attributes

6.34 Label Attributesに記載されているもの。

unused
hot
cold
Enumerator Attributes

6.35 Enumerator Attributesに記載されているもの。

deprecated
sparse

sparse(1)で使われているもの。

リンク
関連する用語
GCC

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.03 (16-May-2019)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic