为什么在min的这个实现中比较地址?

时间:2017-01-26 14:06:09

标签: c

min函数here的实现完成如下:

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

第4行有什么意义?

为什么这样做:(void) (&_min1 == &_min2);

1 个答案:

答案 0 :(得分:8)

如果xy有不同的类型,则会生成警告:

int i;
long j;
(void) (&i == &j);

编译器说:

warning: comparison of distinct pointer types lacks a cast