关于宏的一点注意

在一般的宏定义中,我们使用如:

#define PI 3.1415926

或者带参数的宏如:

#define MIN(x,y) ((x) < (y) ? (x) : (y))

在gnu c中扩展的宏的格式为:({内容}),如:

#define MIN(x, y) ({      \

  const typeof(x) _x = x;   \

  const typeof(y) _y = y;  \

  (void *)(&_x == &_y);  \

  _x < _y ? _x : _y;    \

})

在这样的宏定义中,以最后一个表达式的值作为整个宏的结果!

posted on 2013-07-07 22:58  lpfrylzx  阅读(98)  评论(0编辑  收藏  举报

导航