我在看这样的东西:
#define foo(x) \
(((a > b) ? \
0 : 1), \
(c ? 2 : 3), \
(d ? 4 : 5))
我不确定如何解释这个。有人可以帮我吗?
最佳答案
本质上,就终止 #define
语句而言,\
会忽略换行符,因此每次您编写 foo(var)
在您的代码中,它将替换为
((((a > b) ?
0 : 1),
(c ? 2 : 3),
(d ? 4 : 5))
逗号运算符并没有做很多事情,除了由逗号运算符分隔的语句组成的语句的最终“返回”值是最右边的值。
所有这些都被解释过了,这并不是一个非常有效的 #define
因为你使用了 a
,b
,
和 #define
中的 cd
并且只引用 x
作为参数
关于c - #define 多个元素用逗号分隔的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14758491/