我有以下代码:
int x; x = ({ 1; 2; 3; }); printf("%d\n", x); // should be 3
(如果你很好奇为什么我会编写那样令人厌恶的代码.答案是我不是.我正在编写一个输出C代码的生成器,并且这样的语句会使事情变得容易多了.)
该代码编译并在Apple LLVM版本7.0.2上运行(当然会对未使用的代码发出警告)但在MSCL 10.0和14.0中失败(错误C2059:语法错误:'{').
我的问题是:1)是否有这种代码的名称(-abuse)?2)在任何C/C++标准中是否合法?3)有没有办法让MSCL接受它?
由于我一直使用GCC,所以对MSCL部分问题一无所知.在海湾合作委员会:
1)这称为复合语句表达式 ;
2)这是非标准的GCC扩展.