有结构如下:
         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

解决方案 »

  1.   

    刚搞定,不过还是要散分。
    默认的按照整形数值对齐。
    可这样设置:
    project菜单->settings->c/c++标签->category组合框中选择:code generation.这时你会看到"struct member alignment"字样,你可以从它下面的组合框中选为1byte,这样就等于没有字节对齐的影响了。
      

  2.   

    #pragma pack(push, 1)typedef struct
    {
        unsigned char cType;
        unsigned short iTaskID; 
        unsigned char cDeviceID; 
        unsigned char cTestType; 
    } TASK_CALLER;#pragma pack(pop)sizeof(TASK_CALLER) == 5