Chinaunix首页 | 论坛 | 博客
  • 博客访问: 219782
  • 博文数量: 56
  • 博客积分: 2325
  • 博客等级: 大尉
  • 技术积分: 560
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-30 18:18
文章存档

2012年(7)

2011年(1)

2010年(2)

2009年(46)

我的朋友

分类: C/C++

2009-04-22 10:23:48

#pragma   其实就是控制编译的参数

#pragma   pack(1)   是指定字节对齐方式为   1   byte   

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

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

阅读(798) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~