我注意到,有时,C宏被写成这样:有关`({});`在C中的更多信息?
#define foo(bar) ({ ++bar; })
一些实验后,我发现:
({});
会编,却又无可奈何。 (如预期)- 关闭
;
将导致语法错误。这样做的副作用是确保foo()在代码中看起来像一个函数。 (虽然,如果将分号关闭,那么错误对于诊断问题并不是很有用!) return ({});
抱怨不会被忽略的空值,就像我试图使用void函数一样。
这是为了让开发人员在他们的宏中添加一个分号,还是有另一个目的?我试过谷歌,但它标点符号失败。有没有这个名字?
古代 - 但语法仍支持4.4.2。 – 2010-01-16 08:14:38