首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux内核‘macros’宏

linux内核‘macros’宏
EN

Stack Overflow用户
提问于 2016-10-20 15:33:36
回答 1查看 4.4K关注 0票数 3

我查看了linux内核源代码(kernel.h),并发现这个宏用于min函数:

代码语言:javascript
复制
#ifndef max
#define max(x, y) ({                \
    typeof(x) _max1 = (x);          \
    typeof(y) _max2 = (y);          \
    (void) (&_max1 == &_max2);      \
    _max1 > _max2 ? _max1 : _max2; })
#endif

现在我想知道(void) (&_max1 == &_max2);行是做什么的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-20 15:37:09

它防止了xy的意外型铸造。您可以用相同的符号对不同大小的整数进行算术比较,但不能比较它们的指针。也就是说,这段代码将生成一个编译器警告:

代码语言:javascript
复制
short a = 47;
long b = 11;
min(a, b);

C.f.Is comparing two void pointers to different objects defined in C++?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40158745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档