有结构如下:
typedef struct
{
unsigned char cType;
unsigned short iTaskID;
unsigned char cDeviceID;
unsigned char cTestType;
} TASK_CALLER;用sizeof(TASK_CALLER)返回 6
为何不是(1+2+1+1)=5
typedef struct
{
unsigned char cType;
unsigned short iTaskID;
unsigned char cDeviceID;
unsigned char cTestType;
} TASK_CALLER;用sizeof(TASK_CALLER)返回 6
为何不是(1+2+1+1)=5
默认的按照整形数值对齐。
可这样设置:
project菜单->settings->c/c++标签->category组合框中选择:code generation.这时你会看到"struct member alignment"字样,你可以从它下面的组合框中选为1byte,这样就等于没有字节对齐的影响了。
{
unsigned char cType;
unsigned short iTaskID;
unsigned char cDeviceID;
unsigned char cTestType;
} TASK_CALLER;#pragma pack(pop)sizeof(TASK_CALLER) == 5