奇怪的宏观建设

时间:2011-04-19 01:05:39

标签: c macros

我在c源代码中找到了这个宏,我现在正在移植:

#define Round256(p0, p1) \
X##p0 += X##p1;

该代码中没有变量 X 。谁能告诉我这个符号在这个背景下做了什么?

3 个答案:

答案 0 :(得分:3)

##以文本方式将两个字符串附加在一起。

所以在你的例子中,如果调用如下:

Round256(one, two)

将被翻译为:

Xone += Xtwo;

答案 1 :(得分:2)

宏只是对值进行字符串化

假设它像这样被调用

Round256(1,2)

它将被预处理器扩展为

X1 += X2

这看起来像变量X1 ...... n某处....

##将字符串化的值连接在一起。

我使用数值的原因在于宏本身的名称。

答案 2 :(得分:1)

##是粘贴运算符。它包含X(字面意思)和每个值。因此,Round256(one, two)将转换为Xone += Xtwo,例如。