linux内核中的min(x, y)和max(x, y)宏定义

/linux/include/linux/kernel.h中有min(x, y)和max(x, y)的定义如下:

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

红色两行的作用为:防止不同类型的参数进行比较;

当参数类型不同时,编译器会提示:warning: comparison of distinct pointer types lacks a cast

上一篇:ios水果风暴游戏源码项目下载


下一篇:iOS开发之Alamofire源码解析前奏--NSURLSession全家桶