2016-10-20 26 views
2

と私はmin機能のために、このマクロを見つけました:Linuxカーネル `min`マクロ

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

そして今、私は(void) (&_max1 == &_max2);行が何をするのか思ったんだけど?

+0

@ 2501ええ、私の悪い。バド私はこの正確な質問が以前にここで尋ねられたとは思わなかった。 – PepeHands

+0

それはインターネット上のすべてです。 – 2501

答えて

1

xまたはyの誤った型キャストを防止します。算術演算では、異なるサイズの整数を同じ符号で比較できますが、ポインタを比較してはいけません。私。このコードはコンパイラの警告を生成します:

short a = 47; 
long b = 11; 
min(a, b); 

C.f Is comparing two void pointers to different objects defined in C++?

関連する問題