分功能的实现在这里做的:
#define min(x, y) ({ \ typeof(x) _min1 = (x); \ typeof(y) _min2 = (y); \ (void) (&_min1 == &_min2); \ _min1 < _min2 ? _min1 : _min2; })
第四行有什么意义?
为什么这样做(void) (&_min1 == &_min2);
?
它产生,如果一个警告x
,并y
有不同的类型:
int i; long j; (void) (&i == &j);
编译器说:
warning: comparison of distinct pointer types lacks a cast