#define MAX(x, y) ({\
typeof(x) _x = x;\
typeof(y) _y = y;\
(void)(&_x == &_y);\
_x > _y ? _x : _y;\
})其中最精彩的地方是: (void) (&_x == &_y) 用于判断输入的两个值的类型是否是一致的。如果不一致,那么编译器就会做出如下警告:warning: comparison of distinct pointer types lacks a cast。
加上void是因为这个语句看上去并没有什么作用,有可能被编译器优化掉,因此需要void强制执行。

京公网安备 11010502036488号