10.30 関数属性

__attribute__ キーワードを使用すると、変数または構造体フィールド、関数、型などの特殊な属性を指定できます。

このキーワード形式には、以下のいずれかを使用します。
__attribute__((attribute1, attribute2, ...))
__attribute__((__attribute1__, __attribute2__, ...))
以下に例を示します。
void * Function_Attributes_malloc_0(int b) __attribute__((malloc));
static int b __attribute__((__unused__));
以下の表は、使用可能な関数属性をまとめたものです。

表 10-3 コンパイラがサポートする関数属性および同等のキーワード(または属性)

関数属性 この属性以外の同等キーワード
__attribute__((alias)) -
__attribute__((always_inline)) __forceinline
__attribute__((const)) __pure
__attribute__((constructor[(priority)])) -
__attribute__((deprecated)) -
__attribute__((destructor[(priority)])) -
__attribute__((format_arg(string-index))) -
__attribute__((malloc)) -
__attribute__((noinline)) __declspec(noinline)
__attribute__((no_instrument_function)) -
__attribute__((nomerge)) -
__attribute__((nonnull)) -
__attribute__((noreturn)) __declspec(noreturn))
__attribute__((notailcall)) -
__attribute__((nothrow)) __declspec(nothrow))
__attribute__((pcs("calling_convention"))) -
__attribute__((pure)) -
__attribute__((section("name"))) -
__attribute__((unused)) -
__attribute__((used)) -
__attribute__((visibility("visibility_type"))) -
__attribute__((weak)) __weak
__attribute__((weakref("target"))) -

使用法

宣言、定義、またはその両方でこれらの関数属性を設定できます。以下にサンプルを示します。
void AddGlobals(void) __attribute__((always_inline));
__attribute__((always_inline)) void AddGlobals(void) {...}
関数属性が競合する場合、コンパイラはより安全またはより強力な属性を使用します。たとえば、__attribute__((used))__attribute__((unused)) より安全で、__attribute__((noinline))__attribute__((always_inline)) より安全です。
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.