关键字#pragma pack(1)...#pragma pack()有何作用?pragma是什么的简称?

#pragma   pack(1)   是指定字节对齐方式为   1   byte   
    
 #pragma   其实就是控制编译的参数

 

由于编译器存在数据对齐的问题,如果在定义数据类型的时候不用这两个东东,编译器就会按照默认的方式进行对齐,比如一个BYTE型的变量,长度就可能不再是一个字节,会出现一些预想不到的结果

 

举个简单的例子:  
  struct   st  
  {  
          int   m_iMember1;  
          char   m_cMember2;  
          long   m_lMember3;  
  }  
   
  在使用#pragma   pack(1)   时sizeof(st)=9(32位机器)  
  vc默认:sizeof(st)=16   因为VC默认以8字节对齐,其他编译器可能不一样。  
  如果使用#pragma   pach(4):   sizeof(st)=12;Top

 

vc默认:sizeof(st)=16   因为VC默认以8字节对齐,其他编译器可能不一样。"  
   
  是不对的.在32位机器上的结果是12.因为32位CPU不能支持8字节以上的对齐方式.它都以4字节方式对齐的.Top

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值