c - 在 C 的结构中的哪里放置嵌套 union ?

标签 c struct unions

我有一个嵌套在结构中的匿名 union ,以及其他公共(public)字段。是否有任何理由将 union 放置在结构中的特定位置(例如第一个或最后一个)?

例如,是这样的:

typedef struct _Message
{
    MessageType type;
    union
    {
        SystemMessageArgs systemArgs;            
        OtherMessageArgs usbArgs;
    };
} Message;

比这更好:

typedef struct _Message
{        
    union
    {
        SystemMessageArgs systemArgs;            
        OtherMessageArgs usbArgs;
    };
    MessageType type;
} Message;

以任何方式?

上下文是embedded-C,特别是TI的MSP430

最佳答案

填充可能存在差异,您可以通过对两者使用 sizeof() 并比较结果来发现这一点。如果您正在处理严重受限的内存量,这可能是相关的。

除此之外,它们是等价的。

关于c - 在 C 的结构中的哪里放置嵌套 union ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36149425/

相关文章:

c - 关闭套接字后,套接字连接保持已建立状态

Python 扩展无法使用library_dirs

c - 返回结构和 Int 的结构

c++ - 将虚函数放入结构中

c++ - 将结构从 C 转换为 C++ 类

c - 如果 union 的格式不同,C 如何解释来自 union 的数据?

c++ - 没有完全理解这部分代码

c++ - Struct 内部的指针

c - 为什么位运算不能正常工作

c++ - C++中 union 中的 'protected'有什么意义