这个C语法的移植性如何?

问题描述

我知道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扩展。如果要最大程度的便携性,应该避免使用它。