我在驱动程序实现中发现了奇怪的宏,我无法向自己解释.简化示例是:
cout << ({int i=0; while(i<10) {++i;} i;}) << endl;
它将输出10.
但为什么这种表达会变成一个价值呢?它似乎适用于C和C++.
有人可以解释一下吗?指向关键字和参考将是伟大的.
这是GCC 扩展:
括在括号中的复合语句可能在GNU C中显示为表达式. 复合语句中的最后一件事应该是一个后跟分号的表达式; 此子表达式的值用作整个构造的值.
括在括号中的复合语句可能在GNU C中显示为表达式.
复合语句中的最后一件事应该是一个后跟分号的表达式; 此子表达式的值用作整个构造的值.