(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
感谢花费宝贵的时间浏览,
转载请注明出处。
本人将在[资源共享]分类下陆续加入学习过程中一些比较重要且有用处的资料、源码,大家可前往下载,一起进步。
感谢支持!

浙公网安备 33010602011771号