*参照元 [#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]