C/C++中的括号内的代码块是否合法,MSCL可以编译它吗?

Yif*_*fan 2 c c++ gcc-extensions cl

我有以下代码:

int x;
x = ({ 1; 2; 3; });
printf("%d\n", x); // should be 3
Run Code Online (Sandbox Code Playgroud)

(如果你很好奇为什么我会编写那样令人厌恶的代码.答案是我不是.我正在编写一个输出C代码的生成器,并且这样的语句会使事情变得容易多了.)

该代码编译并在Apple LLVM版本7.0.2上运行(当然会对未使用的代码发出警告)但在MSCL 10.0和14.0中失败(错误C2059:语法错误:'{').

我的问题是:1)是否有这种代码的名称(-abuse)?2)在任何C/C++标准中是否合法?3)有没有办法让MSCL接受它?

Ole*_*nov 8

由于我一直使用GCC,所以对MSCL部分问题一无所知.在海湾合作委员会:

1)这称为复合语句表达式 ;

2)这是非标准的GCC扩展.