首页 > 解决方案 > Union C中的结构偏移问题

问题描述

我在 Keil 的 C 语言中有一个问题,下面是示例 C 代码。

struct A
{
    uint8_t header;
    uint16_t volume;
    uint16_t temp;
    uint8_t footer;
};


union {
    struct A Packet;
    uint8_t buff[6];
} A_union;

问题是我想用页眉、页脚和数据填充结构并用 buff 对其进行序列化,但联合更改字节偏移量(我什至看不到 buff 中的页脚),如图所示。我该如何解决?

更新:正如 Sander 在此链接中建议的那样,我通过修改 struct 解决了这个问题,如下所示

    struct __attribute__((__packed__)) A{
...}

这是用每个字节的独特值填充每个字节的图像

标签: cmemoryalignmentunionoffset

解决方案


推荐阅读