C 奇怪的宏观结构
我在c源代码中找到了这个宏,我现在正在移植它:C 奇怪的宏观结构,c,macros,C,Macros,我在c源代码中找到了这个宏,我现在正在移植它: #define Round256(p0, p1) \ X##p0 += X##p1; 该代码中没有变量X。谁能告诉我符号#在此上下文中的作用吗?#以文本方式将两个字符串附加在一起 因此,在您的示例中,如果按如下方式调用: Round256(one, two) 将翻译为: Xone += Xtwo; ##以文本方式将两个字符串附加在一起 因此,在您的示例中,如果按如下方式调用: Round256(one, two) 将翻译为: Xone +=
#define Round256(p0, p1) \
X##p0 += X##p1;
该代码中没有变量X。谁能告诉我符号#在此上下文中的作用吗?#
以文本方式将两个字符串附加在一起
因此,在您的示例中,如果按如下方式调用:
Round256(one, two)
将翻译为:
Xone += Xtwo;
##
以文本方式将两个字符串附加在一起
因此,在您的示例中,如果按如下方式调用:
Round256(one, two)
将翻译为:
Xone += Xtwo;
##
是粘贴操作符。它包含X(字面意思)和每个值。因此,例如,Round256(一,二)
将被转换为Xone+=Xtwo
。##
是粘贴操作符。它包含X(字面意思)和每个值。因此,例如,Round256(一,二)
将转换为Xone+=Xtwo
。宏只是将值字符串化
假设它是这样叫的
Round256(1,2)
它将由预处理器扩展为
X1 += X2
这似乎类似于变量X1…n的某个地方
##
将字符串化的值连接在一起
我使用数值的原因是宏本身的名称。宏只是将值字符串化 假设它是这样叫的
Round256(1,2)
它将由预处理器扩展为
X1 += X2
这似乎类似于变量X1…n的某个地方
##
将字符串化的值连接在一起
我使用数值的原因是宏本身的名称。多么愚蠢的宏,它的名称多么愚蠢。请在移植的代码中去掉它,只需在代码中使用正确的
+=
语句即可。多么愚蠢的宏,多么愚蠢的名称。请在移植的代码中去掉它,只需在代码中使用正确的+=
语句即可。