gpt4 book ai didi

将一个 C 结构转换为另一个

转载 作者:太空狗 更新时间:2023-10-29 16:20:13 26 4
gpt4 key购买 nike

我有两个相同(但名称不同)的 C 结构:

typedef struct {
double x;
double y;
double z;
} CMAcceleration;


typedef struct {
double x;
double y;
double z;
} Vector3d;

现在我想将一个 CMAcceleration 变量分配给一个 Vector3d 变量(复制整个结构)。我该怎么做?

我尝试了以下但得到了这些编译器错误:

vector = acceleration;           // "incompatible type"
vector = (Vector3d)acceleration; // "conversion to non-scalar type requested"

当然我可以求助于单独设置所有成员:

vector.x = acceleration.x;
vector.y = acceleration.y;
vector.z = acceleration.z;

但这似乎很不方便。

什么是最好的解决方案?

最佳答案

这是您唯一的解决方案(除了将其包装到一个函数中):

vector.x = acceleration.x;
vector.y = acceleration.y;
vector.z = acceleration.z;

你实际上可以转换它,像这样(使用指针)

Vector3d *vector = (Vector3d*) &acceleration;

但这不在规范中,因此行为取决于编译器、运行时和大绿地怪物。

关于将一个 C 结构转换为另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3995940/

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