我有一个嵌套在结构中的匿名联合,以及其他常见字段。有没有理由将联盟放在结构中的特定位置(例如,第一个或最后一个)?
例如,是这样的:
typedef struct _Message
{
MessageType type;
union
{
SystemMessageArgs systemArgs;
OtherMessageArgs usbArgs;
};
} Message;
比这更好:
typedef struct _Message
{
union
{
SystemMessageArgs systemArgs;
OtherMessageArgs usbArgs;
};
MessageType type;
} Message;
以任何方式?
上下文是嵌入式-C,特别是TI的MSP430
答案 0 :(得分:2)
填充可能存在差异,您可以在两者上使用sizeof()
并比较结果。如果您正在处理严重受限的内存量,这可能是相关的。
除此之外,它们是等价的。