gpt4 book ai didi

c++ - 解决对成员的请求...这是非类类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:53 25 4
gpt4 key购买 nike

我想知道为什么以下代码在 Visual Studio 中编译但在移植期间在 Mingw GCC 中给出编译错误。这是我第一次接触__m128类型但是来自this链接在这里它指出

You should not access the __m128 fields directly. You can, however, see these types in the debugger. A variable of type __m128 maps to the XMM[0-7] registers.

代码库很旧,这种类型被用作

Matrix m;
__m128 b0 = _mm_set_ps(b[0][0], b[1][0], b[2][0], 0);
__m128 b1 = _mm_set_ps(b[0][2], b[1][3], b[2][4], 0);

__m128 a00 = _mm_load1_ps(&a[0][0]);
__m128 a10 = _mm_load1_ps(&a[1][0]);
__m128 r1a = _mm_mul_ps(a00, b0);
__m128 r1b = _mm_mul_ps(a10, b1);
__m128 r1 = _mm_add_ps(r1a, r1b);

m[0][0] = r1.m128_f32[3];

我得到的错误是

 error: request for member 'm128_f32' in 'r1', which is of non-class type '__m128 {aka __vector(4) float}'
m[0][0] = r1.m128_f32[3];

我试着查找这个错误 herehere但是我相信它们不适用于我的案例,因为它们处理的是 C++ 最令人头疼的解析问题。任何有关如何解决此问题的建议都将不胜感激。谢谢。

最佳答案

GCC 不像 VS 那样对这些类型使用 union ,这些类型作为内置类型处理。你可以直接索引一个__m128,见here .当然,这会带来可移植性问题。在我的项目中,我使用带有 union 和重载 operator[] 的包装类,但生成的代码不是最优的。

关于c++ - 解决对成员的请求...这是非类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757521/

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