【发布时间】:2012-07-12 13:40:50
【问题描述】:
为什么要打码:
#define EXPONENT(num, exp) num ## e ## exp
EXPONENT(1,1)
EXPONENT(1,-1)
EXPONENT(1,+1)
预处理后变为:
1e1
1e- 1
1e+ 1
并没有进入
1e1
1e-1
1e+1
? 我怀疑这可能是因为 -1,+1 被解析为两个标记(?)。但是,在那种情况下如何获得后者的结果呢?
【问题讨论】:
-
我认为你需要另一个级别的间接...见这里stackoverflow.com/questions/1489932/…
-
我认为在尝试与另一个#define 的值连接时,需要另一个级别的间接,但这里不是这种情况。
-
@JoSo:嗯。对我不起作用(GCC 4.1.2、4.3.4 或 4.5.1)!
-
我用 gcc 4.6.3 和 clang 3.0 检查过
-
@KrzysztofWitkowski:奇怪!仍在研究中。
标签: concatenation c-preprocessor