我有这个 C 宏代码:
#define d(x, y, z) ( \
x += z, \
y += x, \
x += y \
)
我有几个问题:
- 这个宏函数有返回值吗? (例如返回 x、y 或 z)还是只是将参数变量与自身一起添加? (这是没用,我认为)。
\
是什么意思?
- 为什么原始编码器在每次操作后都使用
comma-operator
?为什么不直接使用 ;
而不是 ,
?
任何帮助将不胜感激
Does this macro function return something ? (e.g. return x, y, or z) or is it just add the parameter variable with itself ? (which is useless, i think).
它修改变量的值。 “返回”值是 x
的最终值。
What does the \ means ?
当放在一行的最后时,它否定换行符,这样宏定义就可以跨越多行。
Why does the original coder use comma-operator after each operation? Why not just use ;
instead of `, ?
宏替换文本。考虑以下代码:
int x=1, y=2, z=3, f;
f = 3 * (d(x,y,z));
如果宏使用逗号,则代码变为:
int x=1, y=2, z=3, f;
f = 3 * (x+=z, y+=x, x+=y); // Evaluates to 3 * (the final value of x)
如果宏使用分号,则代码变为:
int x=1, y=2, z=3, f;
f = 3 * (x+=z; y+=x; x+=y); // Syntax error!!!
我是一名优秀的程序员,十分优秀!