奇怪的宏委托

我在现在要移植的c源代码中找到了这个宏:
#define Round256(p0, p1) \\
X##p0 += X##p1;
该代码中没有变量X。谁能告诉我#符号在这种情况下的作用?
已邀请:
##
是粘贴运算符。它污染了X(字面上)和每个值。因此,例如,
Round256(one, two)
将转换为
Xone += Xtwo
##
在文本上将两个字符串附加在一起。 因此,在您的示例中,如果调用如下:
Round256(one, two)
将被翻译成:
Xone += Xtwo;
宏只是将值字符串化 假设它像这样
Round256(1,2)
它会被预处理器扩展为
X1 += X2
似乎类似于某个地方的变量X1 ... n。
##
将字符串化的值连接在一起。 我使用数字值的原因是宏本身的名称。

要回复问题请先登录注册