假设我们有两种结构:结构指针兼容性
typedef struct Struct1
{
short a_short;
int id;
} Struct1;
typedef struct Struct2
{
short a_short;
int id;
short another_short;
} Struct2;
是否安全,从Struct2 *
转换为Struct1 *
? ANSI规范对此有何评论? 我知道一些编译器可以选择对结构字段进行重新排序来优化内存使用,这可能会导致两个结构不兼容。无论编译器标志如何,是否有任何方法可以确保此代码有效?
谢谢!
*重新排序*成员不被标准AFAIK允许。我相信插入不同数量的填充是允许的。 – delnan 2012-01-02 15:53:40
@delnan哦,那么结构'包装'只会禁用对齐?谢谢,我不知道! – Waneck 2012-01-02 16:00:23