在 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()
并比较结果来发现这一点。如果您正在处理严重受限的内存量,这可能是相关的。
除此之外,它们是等价的。
我有一个嵌套在结构中的匿名联合,以及其他公共字段。是否有任何理由将联合放置在结构中的特定位置(例如第一个或最后一个)?
例如,是这样的:
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()
并比较结果来发现这一点。如果您正在处理严重受限的内存量,这可能是相关的。
除此之外,它们是等价的。