gpt4 book ai didi

c - 结构指针兼容性

转载 作者:太空狗 更新时间:2023-10-29 16:53:05 24 4
gpt4 key购买 nike

假设我们有两个结构:

typedef struct Struct1
{
short a_short;
int id;
} Struct1;

typedef struct Struct2
{
short a_short;
int id;
short another_short;
} Struct2;

Struct2 * 转换为 Struct1 * 是否安全? ANSI 规范对此有何规定?我知道一些编译器可以选择重新排序结构字段以优化内存使用,这可能会导致两个结构不兼容。有什么方法可以确保此代码有效,而不管编译器标志如何?

谢谢!

最佳答案

据我所知,这是安全的。

但如果可能的话,这样做会好得多:

typedef struct {
Struct1 struct1;
short another_short;
} Struct2;

然后您甚至告诉编译器 Struct2Struct1 的实例开始,并且由于指向结构的指针始终指向它的第一个成员,所以您将 Struct2 * 视为 Struct1 * 是安全的。

关于c - 结构指针兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702713/

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