Possible Duplicate:
c++ preprocessor macro expansion to another preprocessor directive
我的问题很简单:我想在宏扩展中使用“#”来定义一个marco'M(X)':

#define M(X) #ifdef FOO \
              X=1 \
             #else \
              X=2

我试图使用“\”来转义“#”,但是“\”被解释为宏扩展的换行符,而不是转义字符。
那么如何在宏扩展中使用“#”呢?
谢谢大家!

最佳答案

抱歉,不能让宏发出另一个宏,因为预处理器是单通道的。同样来自c99标准:
(6.10.3.4第3段):
3结果完全
宏替换的预处理标记
序列不作为
预处理指令,即使它
像一个。。。
c++也有类似的东西。

08-16 12:18