宏定义min(x, y)中(void)(&x==&y)含义?

Jeremy_Bai 2014-10-01 09:54:15
如题:代码如下:
#define min(x, y) ({                                \
typeof(x) _min1 = (x); \
typeof(y) _min2 = (y); \
void (&_min1 == &_min2); \
_min1 < _min2 ? _min1 : _min2; })

网上找了找,说是void (&_min1 == &_min2); 中void是显式丢弃一个表达式的值,否则有些编译器会就此给出警告信息。我用的mingw编译,去掉void和不去掉都一样啊,请问大家这里的void到底什么作用啊!!!能举个例子就更好了!
...全文
387 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jeremy_Bai 2014-10-01
  • 打赏
  • 举报
回复
引用 3 楼 mujiok2003 的回复:
[quote=引用 2 楼 bx__8840668 的回复:] [quote=引用 1 楼 mujiok2003 的回复:] 这个应该可以说明问题了
看完您给的链接,我的理解是在编译选项加上-Wunused-value时&_min1 == &_min2会给出warning,加上void来避免这个warning,请问是这个意思吗?[/quote] 是的。 更重要的是比较两个地址后扔掉比较结果的意义。 [/quote] 明白了,谢谢您了~
mujiok2003 2014-10-01
  • 打赏
  • 举报
回复
引用 2 楼 bx__8840668 的回复:
[quote=引用 1 楼 mujiok2003 的回复:] 这个应该可以说明问题了
看完您给的链接,我的理解是在编译选项加上-Wunused-value时&_min1 == &_min2会给出warning,加上void来避免这个warning,请问是这个意思吗?[/quote] 是的。 更重要的是比较两个地址后扔掉比较结果的意义。
Jeremy_Bai 2014-10-01
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
这个应该可以说明问题了
看完您给的链接,我的理解是在编译选项加上-Wunused-value时&_min1 == &_min2会给出warning,加上void来避免这个warning,请问是这个意思吗?
mujiok2003 2014-10-01
  • 打赏
  • 举报
回复

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧