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

原文地址:https://www.cnblogs.com/tanghuimin0713/p/3308244.html