gpt4 book ai didi

c++ - 我可以在 C++ 中安全地将浮点结构转换为 float 组吗?

转载 作者:IT老高 更新时间:2023-10-28 12:46:31 26 4
gpt4 key购买 nike

例如我有这个结构

struct  A {
float x;
float y;
float z;
};

我可以这样做吗? 一一; float* 数组 = (float*)&a;并使用 as float 组?

最佳答案

在实际意义上,是的,您可以这样做,它适用于所有最常用的架构和编译器。

"Typical alignment of C structs on x86"维基百科的部分。

更多细节:

  • float 为 4 字节,不会插入任何填充(几乎所有情况)。

  • 大多数编译器还可以选择指定结构的打包,您可以强制不插入任何填充(即 Visual Studio 中的 #pragma pack)

  • 保证数组在内存中是连续的。

你能保证它可以在世界上所有的 CPU 上和所有的编译器一起工作吗?不..但我绝对希望看到一个失败的平台:)

编辑:如果有填充字节,添加 static_assert(sizeof(A) == 3*sizeof(float)) 将使此代码无法编译。这样你就可以确定它在编译时可以工作。

关于c++ - 我可以在 C++ 中安全地将浮点结构转换为 float 组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45898184/

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