这在标准c中,我们常用来求最小值,它有如下副作用,举例:
代码min(ia++,ib++) 用宏替代 ((ia++) < (ib++) ? (ia++) : (ib++)) ,ia,ib变量加了两次,这不是我们想要的结果,我们可以用函数的方式能够避免。
在linux系统中使用的是GNU c,是标准c的扩展,可以用宏就实现,
#define min_t(type,x,y) \
({ type _ _x = (x); type _ _y = (y); _ _x < _ _y ? _ _x: _ _y; })