10.36 __attribute__((destructor[(priority)])) 関数属性

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

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

構文

__attribute__((destructor[( priority )]))
priority は、優先度を示す整数値(省略可)です。割り当てられている整数値が大きいデストラクタから先に実行されます。優先度が割り当てられていないデストラクタは、優先度が割り当てられているデストラクタの後に実行されます。
100 以下の優先度値は内部使用専用に予約されています。これらの値を使用すると、コンパイラから警告が生成されます。100 を超える優先度値は予約されていません。

使用法

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

int my_destructor(void) __attribute__((destructor));
int my_destructor(void) /* This function is called after main() */
{                       /* completes or after exit() is called. */
   ...
   return 0;
}
関連する参考文書
8.181 --translate_g++
8.182 --translate_gcc
8.183 --translate_gld
関連情報
--fini=symbol リンカオプション
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.