【问题标题】:What does this anonymous-like C block mean?这个类似匿名的 C 块是什么意思?
【发布时间】:2020-07-29 02:52:39
【问题描述】:

我在阅读参考资料时看到类似的代码,我尝试了这段可以编译和运行的代码:

#include <stdio.h>

int x;
void main() {
  (void) ({ x = 0x1234; });
  printf("x=0x%x\n", x);
}

但我不知道该如何解释这一行:(void) ({ x = 0x1234; });。我的意思是,它看起来像一个匿名函数,不接受任何参数并返回 void?我认为不是。而且我没有找到任何关于这种奇怪语法的参考,我应该如何理解它,是否有任何语法参考?

【问题讨论】:

    标签: c syntax


    【解决方案1】:

    它是一个 GCC 扩展(不是标准 C),称为 statement-expression。它里面的语句被求值,它的值是在它里面求值的最后一个表达式语句的值。

    您展示的示例没有用,因为该值被丢弃为void

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 2011-02-09
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      相关资源
      最近更新 更多