gpt4 book ai didi

c - kernel.h中min宏中 "(void) (&_min1 == &_min2)"的作用是什么?

转载 作者:太空狗 更新时间:2023-10-29 16:17:06 26 4
gpt4 key购买 nike

kernel.h最小值定义为:

#define min(x, y) ({                \
typeof(x) _min1 = (x); \
typeof(y) _min2 = (y); \
(void) (&_min1 == &_min2); \
_min1 < _min2 ? _min1 : _min2; })

我不明白 (void) (&_min1 == &_min2); 这行是干什么的。是某种类型检查还是什么?

最佳答案

声明

(void) (&_min1 == &_min2);

是有保证的“无操作”。所以它存在的唯一原因是它的副作用。

但是声明没有副作用!

但是:它强制编译器在 xy 的类型不兼容时发出诊断
请注意,使用 _min1 == _min2 进行测试会将其中一个值隐式转换为另一种类型。

所以,这就是它的作用。 它在编译时验证xy 的类型是否兼容

关于c - kernel.h中min宏中 "(void) (&_min1 == &_min2)"的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595593/

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