#define min2(a, b) \ ({ \ typeof(a) __a; \ typeof(b) __b; \ \ __a > __b ? __b : __a; \ }) #define min3(a, b, c) (min2 (min2 (a, b), c)#define min4(a, b, c, d) (min2 (min3 (a, b, c), d)