可能重复:
c ++预处理器宏扩展到另一个预处理器指令
我的问题很简单:我想在宏扩展中使用"#",例如,定义一个marco'M(X)':
#define M(X) #ifdef FOO \
X=1 \
#else \
X=2
Run Code Online (Sandbox Code Playgroud)
我尝试使用'\'来转义'#',但'\'被解释为宏扩展的换行符,而不是转义字符.那么如何在宏扩展中使用'#'?
谢谢大家!
抱歉,您不能让宏发出另一个宏,因为预处理器是单通道.同样来自c99标准:
(6.10.3.4第3段):
3生成的完全宏替换的预处理标记序列不会作为预处理指令处理,即使它类似于一个,...
c ++也有类似的东西.
你可以这样做:
#ifdef FOO
#define M(X) X=1
#else
#define M(X) X=2
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |