可能重复:
C preprocessor and concatenation
C preprocessor # and ## operators
在搜索我开发的操作系统的某些C代码(在嵌入式项目中)时,我发现了以下定义语句:
#define concatn(s1, s2) s1 ## s2
我从未见过“##”运算符,经过一些严肃的谷歌搜索后,我找不到任何引用。这是怎么回事?
我已经搜索了OS源代码,我找不到任何对字符串“##”的引用被定义为其他形式的C运算符。这是标准C,还是这可能/可能是编译器的一个特性?
答案 0 :(得分:4)
它是预处理器的一部分,标记的串联,concatn(x,y)
被xy
取代。
答案 1 :(得分:4)
##
是C中的令牌粘贴运算符。它用于连接两个令牌。
示例:
#define PASTE(front, back) front ## back
然后
PASTE(name, 1)
创建令牌name1
答案 2 :(得分:3)
这是标准的c预处理器字符串连接运算符
答案 3 :(得分:2)