【发布时间】:2012-01-10 18:15:23
【问题描述】:
我最近遇到了这段代码,这对我来说看起来不合法(但 gcc 会编译它)。我并不介意这个结构,而是想要一个名字:
#define MAX(a,b) \
({ \
typeof(a) _a = (a); \
typeof(b) _b = (b); \
(_a > _b) ? (_a) : (_b); \
})
显然,最后一条语句的值作为命名空间限定的表达式的“值”返回。
编辑:感谢各位的回答。原来这是对普通 C 语言的扩展,称为语句表达式。
【问题讨论】:
-
这里没有“命名空间”。如果您没有看到
namespace关键字,则它不是命名空间。
标签: c++ c gcc terminology