问题描述
我知道GCC和Clang可能都接受这种语法,但是如果我要为常见的5个平台(Mac,Windows,Linux,iOS,Android(Java))制作游戏,但是如果我让C可以在Android上运行桥接Java和C,这具有多大的可移植性?应该避免这种情况吗?
我知道这是一个不好的功能,因为仅使用return num*num;
就足够了,但是这种语法应该避免吗?
int square(int num) {
int x = ({
int y = num;
y*y;
});
return x;
}
解决方法
这不是标准的C。它是一个称为Statement Expressions的GNU C扩展。如果要最大程度的便携性,应该避免使用它。