热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux教程>编程开发>C++>

一个min的宏

来源: 作者: 时间:2008-03-17 Tag: 点击:
#define min(x,y) ({ \
typeof(x) _x = (x); \
typeof(y) _y = (y); \
(void) (&_x == &_y); \
_x < _y ? _x : _y; })

int main()
{
min(3.2, 3);
return 0;
}

$ gcc macro.c
macro.c: In function `main':
macro.c:17: warning: comparison of distinct pointer types lacks a cast

int main()
{
int x = 3;
float y = 3.2;

(void) (&x == &y);
return 0;
}

(&x == &y);

&x 取变量x地址,转而进化为“取指针类型”的语义,更进而判断 x 类型
同样:&y 取变量 y 地址,转而进化为“取指针类型”的语义,更进而判断 y 类型

所以: (&x == &y); 主要的作用是: 通过比较两个指针,判断 x 与 y 的类型 是否相等
void 修饰为这条条件表达式是一条完整的C语句。

这条宏的目的是:维护同一类型的变量进行合理判断的完整性
从而让编译器给出警告信息,若不相等时,重新编写代码。
最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表