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);
?
答案 0 :(得分:8)
如果x
和y
有不同的类型,则会生成警告:
int i;
long j;
(void) (&i == &j);
编译器说:
warning: comparison of distinct pointer types lacks a cast