gpt4 book ai didi

c - C中难以理解的类似函数的宏

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:42 24 4
gpt4 key购买 nike

我有这个 C 宏代码:

#define d(x, y, z) (    \
x += z, \
y += x, \
x += y \

)

我有几个问题:

  1. 这个宏函数有返回值吗? (例如返回 x、y 或 z)还是只是将参数变量与自身一起添加? (这是没用,我认为)。
  2. \ 是什么意思?
  3. 为什么原始编码器在每次操作后都使用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!!!

关于c - C中难以理解的类似函数的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23910280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com