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

Where to place a nested union in a struct in C?

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

例如,是这样的:

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() 并比较结果来发现这一点。如果您正在处理严重受限的内存量,这可能是相关的。

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