gpt4 book ai didi

c++ - 是否可以访问 __m128 变量中的内部值作为 C++ 类中的属性?

转载 作者:太空狗 更新时间:2023-10-29 20:06:09 24 4
gpt4 key购买 nike

我想要一个 Vector 类(表示 3 个 float 的 vector ),它使用 SSE 内在函数实现(所以我不会使用 __m128 类型的第 4 个元素)。但我希望能够像属性一样轻松访问它们:所以 myVector.x 将访问 vec 中的 0-31 位,myVector.y 将访问 vec 中的 32-63 位,但不必调用一些 getX()方法。 'x' 属性将是 'vec' 的 0-31 位的一种别名。可能吗?

class Vector {  
public:
float x;
float y;
float z;
private:
__m128 vec;
}

最佳答案

不,因为这违反了强别名规则

当然,您可以使用转换或 union 来假装 __m128 是一个 float 数组,但优化器不会为您保持一致性,因为您违反了语言规则。

参见 What is the strict aliasing rule?

(根据规则,使用 union 访问是安全的,但这仅适用于命名 union 时。获取 union 成员的指针或引用,然后直接使用指针或引用是不安全的。)

关于c++ - 是否可以访问 __m128 变量中的内部值作为 C++ 类中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9241721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com