假设我有一个结构
struct vector_struct {
float x;
float y;
float z;
} vector;
我希望能够解决vector.x上面代码允许我做的 x、y 和 z 值等问题。但是,为了以显式方式促进使用 SSE SIMD 指令的快速算术,我想做以下事情:
union vector_union {
struct vector_struct float_values;
__m128d packed_values;
} vector;
现在,如果我想对向量执行 SIMD 指令,我可以将vector.packed_values其用作各种 SIMD 指令(如乘法)的参数。但是,这看起来很丑陋,好像我想要 的值x,我将不得不写
foo = vector.float_values.x
而不仅仅是
foo = vector.x
那么,我的问题是,是否有任何方法可以将多个命名变量与另一个命名变量union关联起来。就像是
union vector_union {
float values[3];
__m128d packed_values;
} vector;
除了 wherevector.values[0]可以被称为vector.x,vector.values[1]可以被称为vector.y, 等等