【发布时间】:2010-01-16 02:03:55
【问题描述】:
我注意到有时,C 宏是这样写的:
#define foo(bar) ({ ++bar; })
经过一些实验,我发现:
-
({});将编译,但什么也不做。 (正如预期的那样。) - 关闭
;将导致语法错误。这样做的副作用是确保 foo() 在您的代码中看起来像一个函数。 (不过,如果您不使用分号,则该错误对于诊断问题不是很有用!) -
return ({});抱怨 void 值未被忽略,就像我尝试使用 void 函数一样。
这只是为了让开发人员在他们的宏中添加分号,还是有其他目的?我试过谷歌,但标点符号失败了。有这个名字吗?
【问题讨论】: