首页 > 代码库 > (void)(&x==&y)
(void)(&x==&y)
#define max(x,y) ({ \
typeof(x) _x = (x); \
typeof(y) _y = (y); \
(void) (&_x == &_y); \
_x > _y ?
_x : _y; })
typeof(x)的意思是取x的类型。这不是标准C里的,gcc支持。vc不支持
(void) (&_x == &_y);这句话本身从运行程序来讲全然是一句废话,它的作用在于,本身我们无法做这种操作typeof(_x)==typeof(_y)。所以有益推断他们2个的地址指针是否相等。显然是不可能相等,可是假设_x和_y的类型不一样,其指针类型也会不一样。2个不一样的指针类型进行比較操作,会抛出一个编译警告。也就是说char *p; int *q; 然后p==q;,这个推断由于一个是char*一个是int*,会在编译时产生一个warning。巧妙就巧妙在这里。通过void显式丢弃一个表达式的值。否则有些编译器会就此给出警告信息。
(void)(&x==&y)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。