作为初学者,我很难理解以下陈述
a)如果在a的替换列表中 函数式宏,一个参数是 紧接在之前或之后 ##预处理令牌,参数被相应的替换 参数的预处理令牌 序列;
b)对象和对象都是 类似函数的宏调用, 在更换清单之前 重新审查更多的宏名称 替换,每个##的实例 替换中的预处理令牌 列表(不是参数)被删除 和前面的预处理令牌 与以下内容连接在一起 预处理令牌
请您帮助我用一些简单的例子来理解上述陈述
答案 0 :(得分:3)
<强>宏强>
#define MAKE_EVENT_HANDLER(x) void On##x(void) {
<强>用法强>
MAKE_EVENT_HANDLER(MouseClick)
/* Do stuff */
} // End of function
如何扩展
void OnMouseClick(void) { /* Do stuff */ }
答案 1 :(得分:1)
前段时间我写了几篇关于预处理器的文章。它们既包含技术内容,也包含民间传说。第2部分介绍#和##运算符。
答案 2 :(得分:0)
维基百科有一个很好的例证 - &gt; token pasting