为了账号安全,请及时绑定邮箱和手机立即绑定

在define里面遇到的问题

在define里面遇到的问题

C C++
你想象不到我有多执着 2017-01-05 14:04:15
首先看一下下面的代码#define MAX(a, b) \ ({ \ typeof(a) _a = a; \ typeof(b) _b = b; \ (void)(&_a == &_b); \ ((_a)>(_b) ? (_a) : (_b)); \ })({......})是语句表达式问题1:里面的(void)(&_a==&_b)书上说是比较地址类型,但这不是比较地址吗?为什么会是比较地址类型?问题2:还是有关(void)(&_a==&_b),书上说它的作用是“前面的强类型转换(void)目的是要让编译器认为后面的比较语句是有作用的,从而不会因为误以为没有实际作用而报出其他我们不需要的警告。”1.“前面的强类型转换(void)目的是要让编译器认为后面的比较语句是有作用的”这句话,编译器从上往下编译,应该是不会忽略掉后面的语句的,那“让编译器认为后面的比较语句是有作用的”这句话是不是有点多余??2.我去掉那条语句的时候编译的时候没有警告,加上反倒有警告,无法理解“编译器从而不会因为误以为没有实际作用而报出其他我们不需要的警告”
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1373 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信