2
比方說,我有一個結構如何使用C union將多個命名變量和另一個更大的命名變量等同起來?
struct vector_struct {
float x;
float y;
float z;
} vector;
我希望能夠解決在x,y和z值vector.x
等,它們上面的代碼可以讓我做。然而,爲了便於快速算法,在一個明確的方式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
稱,等
非常好!我不知道匿名結構已被添加!非常感謝你! – wyager 2013-03-09 21:46:38