【发布时间】:2012-09-30 05:15:53
【问题描述】:
可能重复:
C preprocessor and concatenation
C preprocessor # and ## operators
在搜索我使用(在嵌入式项目上)开发的操作系统的一些 C 代码时,我发现了以下定义语句:
#define concatn(s1, s2) s1 ## s2
我从未见过“##”运算符,经过一番认真的谷歌搜索后,我找不到任何对它的引用。这是怎么回事?
我搜索了操作系统源代码,但找不到任何对字符串“##”的引用,该字符串被定义为某种其他形式的 C 运算符。这是标准 C,还是可能/可能是编译器的一个特性?
【问题讨论】:
-
在预处理器中连接
-
"## Operator C" -> I'm Feeling Lucky 你不会经常使用“手气不错”的按钮,但在这里可以正常使用。
-
好吧,我不知道我的 Google 上下文是怎么回事,但是当我搜索时,Google 倾向于忽略特殊字符。我尝试的每次搜索都将结果返回到通用的 C 运算符列表——其中没有一个包含“##”运算符。事实上,我打开了许多这样的页面并在页面内进行了搜索——在任何地方都没有找到。
-
@H2CO3:您所链接的问题并不是涵盖这个问题的先例——它更多地是关于一个技术细节,而不是关于 ## 运算符的一般性问题。
-
是的,我读过这个问题——这不是重复的,当然也不是“精确”的。
标签: c operators c-preprocessor