无法理解linux内核中max函数的实现

时间:2016-01-15 05:28:43

标签: linux c

(void)的重要性(& _max1 ==& _max2);在Linux / tools / lib / lockdep / uinclude / linux / kernel.h中找到的max的以下定义中?

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

1 个答案:

答案 0 :(得分:1)

它有助于编译器检测max()与无法比较xy的无效使用。正如Sukminder指出的那样,==检查仅在编译时使用,它不会在生成的二进制文件中结束。