我正在查看Linux内核源代码(kernel.h),我发现了这个min函数的宏:
#ifndef max
#define max(x, y) ({ \
typeof(x) _max1 = (x); \
typeof(y) _max2 = (y); \
(void) (&_max1 == &_max2); \
_max1 > _max2 ? _max1 : _max2; })
#endif
Run Code Online (Sandbox Code Playgroud)
现在我想知道(void) (&_max1 == &_max2);line 有什么作用?
x它可以防止或 的意外类型转换y。您可以对具有相同符号的不同大小的整数进行算术比较,但不能比较它们的指针。即这段代码会生成编译器警告:
short a = 47;
long b = 11;
min(a, b);
Run Code Online (Sandbox Code Playgroud)
Cf是否比较两个指向 C++ 中定义的不同对象的 void 指针?
| 归档时间: |
|
| 查看次数: |
5309 次 |
| 最近记录: |