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

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

 1   #define min(x, y) ({ \
 2       typeof(x) _min1 = x; \
 3       typeof(y) _min2 = y; \
 4       (void) (&_min1 == &_min2); \
 5       _min1 < _min2 ? _min1 : _min2; })
 6   
 7   #define max(x, y) ({ \
 8       typeof(x) _max1 = x; \
 9       typeof(y) _max2 = y; \
10      (void) (&_max1 == &_max2); \
11      _max1 > _max2 ? _max1 : _max2; }

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

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

posted @ 2013-09-08 12:47  tanghuimin0713  阅读(1959)  评论(2编辑  收藏  举报