*参照元 [#j005f63b]
#backlinks

*説明 [#bddbfc26]
-パス: [[linux-2.6.33/include/linux/compiler.h]]
--gcc3 版: [[linux-2.6.33/include/linux/compiler-gcc3.h]]
--gcc4 版: [[linux-2.6.33/include/linux/compiler-gcc4.h]]

-FIXME: これは何?
--説明
-関数や変数に対して出る警告 'defined but not used'
(定義されているが使用されていない)を抑制するための属性の宣言
--恐らく GCC 専用


**参考 [#he6e3bae]


*実装 [#l6f7dad2]
** include/linux/compiler.h [#f0f5159c]
 /*
  * Allow us to avoid 'defined but not used' warnings on functions and data,
  * as well as force them to be emitted to the assembly file.
  *
  * As of gcc 3.4, static functions that are not marked with attribute((used))
  * may be elided from the assembly file.  As of gcc 3.4, static data not so
  * marked will not be elided, but this may change in a future gcc version.
  *
  * NOTE: Because distributions shipped with a backported unit-at-a-time
  * compiler in gcc 3.3, we must define __used to be __attribute__((used))
  * for gcc >=3.3 instead of 3.4.
  *
  * In prior versions of gcc, such functions and data would be emitted, but
  * would be warned about except with attribute((unused)).
  *
  * Mark functions that are referenced only in inline assembly as __used so
  * the code is emitted even though it appears to be unreferenced.
  */
 #ifndef __used
-gcc 以外のコンパイラで、__used に特別な意味を定めて居ない場合

 # define __used			/* unimplemented */
-__used には特に効力なし

 #endif


** include/linux/compiler-gcc3.h [#c4d08228]
 #if __GNUC_MINOR__ >= 3
-新しい gcc(3.3 以上)の場合

 # define __used			__attribute__((__used__))
-変数に対して、__attribute__( (used) ) を宣言できる。

 #else
-古い gcc(3.3 未満)の場合

 # define __used			__attribute__((__unused__))
-unused でも used でも効力は同じらしい。
変数に対して、__attribute__( (used) ) を宣言できないため、
unused を使うらしい。
--この辺りの理屈はよくわかりません。正直どうでもいい…。

 #endif


** include/linux/compiler-gcc4.h [#e1250e81]
 #define __used			__attribute__((__used__))


*コメント [#t5e5509c]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS