#define max(a,b) \ ({ typeof (a) _a = (a); \ typeof (b) _b = (b); \ _a > _b ? _a : _b; })
为何这么蛋疼呢?
防止调两次函数。
如果max(a,b)为a > b ? a : b
max(a,b)
a > b ? a : b
max(f(1), f(2)) => f(1) > f(2) ? f(1) : f(2)
就调了2次,而上面的宏定义把返回值缓存了
标签
查看
403 次