首页 > 解决方案 > 这个类似匿名的 C 块是什么意思?

问题描述

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

#include <stdio.h>

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

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

标签: csyntax

解决方案


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

您显示的示例没有用,因为该值被强制转换为 丢弃void


推荐阅读