您的位置:首页 > 其它

struct n字节的对齐方式

2010-04-07 23:49 295 查看
struct 在VC6下默认8字节对齐方式,但2005的默认对齐方式不是这样的,所以俩边如果通信的话, 同样的结构会出现大小不一样的情况。这个时间就需要一下函数的处理

 

VC中提供了#pragma pack(n)来设定变量以n字节对齐方式。n字节对齐就是说变量存放的起始地址的偏移量有两种情况:第一、如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式,第二、如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式

 

例如:

#pragma pack(push) //保存对齐状态

  #pragma pack(4)//设定为4字节对齐

  struct test

  {

  char m1;

  double m4;

  int m3;

  };

  #pragma pack(pop)//恢复对齐状态

 

如果不加字节的默认设置和退出的状态  ,sizeof(test) = 24;

但是上面的= 16

 

这个问题需要注意了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct