我有一个嵌套在结构中的匿名 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/