構造体があるとしましょう
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;
vector.values[0]
として参照できる場合を除き、vector.x
、などvector.values[1]
として参照できます。vector.y