相关疑难解决方法(0)

关于`({});`的更多信息?

我注意到有时候,C宏写得像这样:

#define foo(bar) ({ ++bar; })
Run Code Online (Sandbox Code Playgroud)

经过一些实验,我发现:

  1. ({});会编译,但什么都不做.(正如所料.)
  2. 离开;将导致语法错误.这样做的副作用是确保foo()看起来像代码中的函数.(虽然,如果你关闭分号,错误对诊断问题不是很有用!)
  3. return ({}); 抱怨虚假值不被忽略,就像我试图使用void函数一样.

这只是为了让开发人员在他们的宏中添加分号,还是有另一个目的?我已经尝试过谷歌,但是标点符号失败了.这有名字吗?

c macros gcc

8
推荐指数
1
解决办法
248
查看次数

标签 统计

c ×1

gcc ×1

macros ×1