2017-01-26 11 views
7

मिनट समारोह here के कार्यान्वयन किया जाता है के रूप में:मिनट के इस कार्यान्वयन में पते की तुलना क्यों करें?

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

4 लाइन की बात क्या है?

यह क्यों करें: (void) (&_min1 == &_min2);?

उत्तर

8

यह एक चेतावनी उत्पन्न करता है, तो x और y विभिन्न प्रकार है:

int i; 
long j; 
(void) (&i == &j); 

संकलक का कहना है:

warning: comparison of distinct pointer types lacks a cast 
संबंधित मुद्दे