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;