*参照元 [#p886276f]
#backlinks

*説明 [#uc003ff7]
-パス: [[linux-4.4.1/arch/arm/include/asm/glue.h]]

-アーキテクチャ名と関数名を連結させるマクロ __glue() の本体。
--__glue(aaa, _bbb) のように呼び出せば aaa_bbb というトークンが得られる。
--ARM の実装では _CACHE と共に使われることが多いようだ。
--[[linux-4.4.1/__glue()]]
--[[linux-4.4.1/_CACHE]]


**引数 [#af51fa73]
-name
--アーキテクチャ名
-fn
--関数名


**返り値 [#z22d323a]
-name と fn を連結したトークン
--関数ではないため、値は返らない


**参考 [#q6aaaf64]


*実装 [#f0151806]
 #ifdef __STDC__
 #define ____glue(name,fn)       name##fn
 #else
 #define ____glue(name,fn)       name/**/fn
 #endif
-ISO C 準拠のコンパイラなら、トークン連結演算子 ## を使う。
-昔のコンパイラ(ISO C に準拠しないコンパイラ)は、スペース無しで空のコメントを間に入れることで、トークン連結できた?
--ISO C ではコメントはスペースに置換されるので、トークン連結の意味をなさない。
--ISO C に準拠していないようなコンパイラが GNU 拡張構文を使いまくっている Linux をコンパイルできるとは思えないんだが…。


*コメント [#xd675706]

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