(void) (&_x == &_y)的作用

如果有下面这段代码:

#define min(x, y)   ({          
    const typeof(x) _x = (x);   
    const typeof(y) _y = (y);   
    (void) (&_x == &_y);        
    _x < _y ? _x : _y;          })

int x = 2;
char y = 3;
int m;
m = min(x, y);

编译的时候,经过预处理后,就会有这样的判断操作:

int * == char *;

因此编译器就会提示:

warning: comparison of distinct pointer types lacks a cast

这个宏的巧妙之处就在于此。

所以,总结起来就是:

(void) (&_x == &_y) 用于判断输入的两个值的类型是否是一致的。如果不一致,那么编译器就会做出如下警告:warning: comparison of distinct pointer types lacks a cast
原文地址:https://www.cnblogs.com/GyForever1004/p/8678554.html