我在c源代码中找到了这个宏,我现在正在移植:
#define Round256(p0, p1) \
X##p0 += X##p1;
该代码中没有变量 X 。谁能告诉我#这个符号在这个背景下做了什么?
答案 0 :(得分:3)
##
以文本方式将两个字符串附加在一起。
所以在你的例子中,如果调用如下:
Round256(one, two)
将被翻译为:
Xone += Xtwo;
答案 1 :(得分:2)
宏只是对值进行字符串化
假设它像这样被调用
Round256(1,2)
它将被预处理器扩展为
X1 += X2
这看起来像变量X1 ...... n某处....
##
将字符串化的值连接在一起。
我使用数值的原因在于宏本身的名称。
答案 2 :(得分:1)
##
是粘贴运算符。它包含X(字面意思)和每个值。因此,Round256(one, two)
将转换为Xone += Xtwo
,例如。