在一般的宏定义中,我们使用如:
#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; \
})
在这样的宏定义中,以最后一个表达式的值作为整个宏的结果!