我有这个c宏代码:
#define d(x, y, z) ( \
x += z, \
y += x, \
x += y \
)
Run Code Online (Sandbox Code Playgroud)
我有几个问题:
\意味着什么?comma-operator在每次操作后都会使用?为什么不用;而不是,?任何帮助,将不胜感激
这个宏函数会返回一些东西吗?(例如,返回x,y或z)或者只是自己添加参数变量?(我认为这是无用的).
它修改了变量的值."返回"值是最终值x.
\是什么意思?
当最后放在一行上时,它会否定换行符,以便宏定义可以跨越多行.
为什么原始编码器在每次操作后都使用逗号运算符?为什么不用
;而不是`,?
宏替换文本.请考虑以下代码:
int x=1, y=2, z=3, f;
f = 3 * (d(x,y,z));
Run Code Online (Sandbox Code Playgroud)
如果宏使用逗号,则代码变为:
int x=1, y=2, z=3, f;
f = 3 * (x+=z, y+=x, x+=y); // Evaluates to 3 * (the final value of x)
Run Code Online (Sandbox Code Playgroud)
如果宏使用分号,则代码变为:
int x=1, y=2, z=3, f;
f = 3 * (x+=z; y+=x; x+=y); // Syntax error!!!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |