【发布时间】:2025-03-20 05:45:02
【问题描述】:
我遇到了一个在 C 头文件中定义的宏,我有点难以理解。
#if BAR
#define FOO(s,err) \
((SOMEPOINTER)(s))->VALID != SOMEVARIABLE \
? (err) \
:
#else
#define FOO(s,err)
就是这样。我了解if/else 的情况,但我不确定FOO 的第一个宏定义在做什么。显然正在进行三元运算,但我对-> 很好奇,因为我在网上找不到对它的引用。我也很好奇这里似乎没有任何返回值。如果无论结果如何,您都没有返回任何东西,那么进行比较有什么意义?老实说,里面的“\”家伙也吓坏了我。
【问题讨论】:
-
预处理器宏根本不返回值,
->运算符让您可以访问struct字段以获取structpoitners。 -
:之后有什么遗漏吗??因为它看起来像一个搞砸的三元运算符。