我有以下代码:
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 接受它?