在处理3D点时,我遇到了这种类型定义的方法:
union point_3d {
struct {
GLdouble x, y, z;
} coord;
GLdouble tab[ 3 ];
};
因此,坐标可以通过名称和下标来访问,例如可互换地使用p.coord.x
和p.tab.[0]
.
这比typedef GLdouble point_3d[3];
更有用,因为联合支持直接赋值(当然,我们可以通过名称访问坐标),但也比struct point_3d { glDouble x, y, z; };
更有用,因为类型可以直接迭代,而不使用sizeof
.
但是,真正重要的问题是:这是否安全?这是便携式的吗?我还没有能够找到任何东西来表明它不是,但我还没有能够证实它是有保证的,所以我在这里问那些希望比我更有知识的人.
(while I am interested to know if this works on Windows, I'm specifically referring to POSIX portability. Windows is only of secondary importance to me)