【发布时间】:2013-06-11 08:11:17
【问题描述】:
我已经用 C 编程了很长一段时间了。所以我决定学习一些高级 C。我听说过 gcc 编译器扩展。下面我看到了 MAX() 的代码,我到目前为止已经实现如下
#define MAX(x,y) ((x) > (y)? (x): (y))
这是我找到的新定义。不幸的是,我什至无法理解以下代码的作用?为什么我会像下面那样做而不是像上面那样做?
#define MAX(a,b) \
({ \
typeof (a) _a = (a); \
typeof (b) _b = (b); \
_a > _b ? _a : _b; })
【问题讨论】:
-
if ( x > y ) ? (x) : (y)-- 认真的吗?我的意思是,if和 三元运算符?这甚至可以编译吗?