Gcc 可以在struct';指针引用的字段?

Gcc 可以在struct';指针引用的字段?,gcc,reference,Gcc,Reference,这是我的密码 struct Vector { float x, y, z, w; }; typedef struct Vector Vector; inline void inv(Vector* target) { (*target).x = -(*target).x; (*target).y = -(*target).y; (*target).z = -(*target).z; (*target).w = -(*target).w; } 我正在为ARM(iPhone)使用GCC

这是我的密码

struct Vector
{
 float  x, y, z, w;
};
typedef struct Vector Vector;

inline void inv(Vector* target)
{
 (*target).x = -(*target).x;
 (*target).y = -(*target).y;
 (*target).z = -(*target).z;
 (*target).w = -(*target).w;
}
我正在为ARM(iPhone)使用GCC。这可以矢量化吗


PS:我正在尝试某种优化。欢迎提供任何建议。

可能不会,但是您可以尝试使用限制指针,这将减少编译器中的别名问题,并可能生成更好的代码。

可能不会,不过,您可以尝试使用限制指针,这将减少编译器中的别名问题,并可能生成更好的代码。

这取决于向量的定义方式,但也有可能。如果您正在寻找自动矢量化,请尝试Intel的ICC(假设我们在这里讨论的是x86?),它在某些情况下做得相当好(比gcc好得多),当然,它总是可以通过手动显式矢量化来改进,因为程序员对程序的了解比编译器仅从源代码中所能暗示的要多。

这取决于向量的定义方式,但这是可能的。如果您正在寻找自动矢量化,请尝试Intel的ICC(假设我们在这里讨论的是x86?),它在某些情况下做得相当好(比gcc好得多),当然,它总是可以通过手动显式矢量化来改进,因为程序员对程序的了解比编译器仅从源代码中所暗示的要多。

哦,对不起。我添加了Vector的定义和目标硬件。好吧,在这种情况下,我建议手动对其进行矢量化-这很简单-使用Neon Intrinsic for gcc,而不是使用汇编程序。谢谢这里的建议和其他问题:)哦,我很抱歉。我添加了Vector的定义和目标硬件。好吧,在这种情况下,我建议手动对其进行矢量化-这很简单-使用Neon Intrinsic for gcc,而不是使用汇编程序。感谢这里的建议和其他问题:)感谢引入restrict关键字。我会喜欢的。谢谢你介绍我。我来挖。