__attribute__((constructor[(priority)])) 関数属性

この属性を指定すると、関連付けられている関数が、main() に入る前に自動的に呼び出されます。

Note

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

Show/hide構文

__attribute__((constructor[(priority)]))

priority は、優先度を示す整数値(省略可)です。割り当てられている整数値が小さいコンストラクタから先に実行されます。優先度が割り当てられていいコンストラクタは、優先度が割り当てられているコンストラクタの後に実行されます。

100 以下の優先度値は内部使用専用に予約されています。これらの値を使用すると、コンパイラから警告が生成されます。100 を超える優先度値は予約されていません。

Show/hide使用法

この属性は、起動コードまたは初期化コードに対して使用できます。例えば、DLL のロード時に呼び出す関数に使用します。

GNU のメイクファイルを変更せずにそのまま使用し、ARM コンパイラでビルドする場合は、リンカオプション --init=symbol よりもこの属性を使用することを推奨します。例えば、--translate_gcc--translate_gld--translate_g++ などを使用する場合が該当します。

Show/hide

以下の例では、main() が実行される前に、指定された順序でコンストラクタ関数が呼び出されます。

int my_constructor(void) __attribute__((constructor));
int my_constructor2(void) __attribute__((constructor(102)));
int my_constructor3(void) __attribute__((constructor(101)));

int my_constructor(void) /* 3 番目に呼び出される */
{                        /* コンストラクタ関数 */
    ...
    return 0;
}

int my_constructor2(void) /* 最初に呼び出される */
{                         /* コンストラクタ関数 */
    ...
    return 0;
}

int my_constructor3(void) /* 2 番目に呼び出される */
{                         /* コンストラクタ関数 */
    ...
    return 0;
}

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711