在C中的结构中放置嵌套联合的位置?

时间:2016-03-22 08:28:11

标签: c struct unions

我有一个嵌套在结构中的匿名联合,以及其他常见字段。有没有理由将联盟放在结构中的特定位置(例如,第一个或最后一个)?

例如,是这样的:

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

1 个答案:

答案 0 :(得分:2)

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

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