Fork me on GitHub

C语言-结构体字节对齐问题

C语言-结构体字节对齐问题

在调试结构体从flash读取之后进行校验的时候一直校验不通过,查来查去发现问题:

typedef struct
{
    uint8_t SensorID[6];        //传感器ID
    uint32_t BusinessCyc;       //业务周期
    uint32_t ControlCyc;        //控制周期
    uint32_t ChannelNum;        //信道号
    uint16_t Check;             //CRC
}SensorInfo;

使用sizeof(SensorInfo)发现是24。

在使用结构体时候应该注意对齐方式,如果想按照一字节对齐:

typedef struct
{
    #pragma pack(1)
    uint8_t SensorID[6];        //传感器ID
    uint32_t BusinessCyc;       //业务周期
    uint32_t ControlCyc;        //控制周期
    uint32_t ChannelNum;        //信道号
    uint16_t Check;             //CRC
}SensorInfo;
posted @ 2021-12-27 13:33  一地鸡毛-  阅读(76)  评论(0编辑  收藏  举报