假设我有一个结构
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
, 等等