资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

为什么这个结构的长度多了两个字节?

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

有这样一个结构体  
  typedef   struct  
  {  
      short   int   bfType;                         /*   文件类型,   必须为   "BM"   (0x4D42)   */  
      long   bfSize;                         /*   文件的大小(字节)   */  
      short   int     bfReserved1;               /*   保留,   必须为   0   */  
      short   int     bfReserved2;               /*   保留,   必须为   0   */  
      long   bfoffBits;                   /*   位图阵列相对于文件头的偏移量(字节)   */  
  }   BITMAPFILEHEADER;               /*   文件头结构   */  
  为啥sizeof(BITMAPFILEHEADER)的长度是14,应该是2+4+2+2+4=12才对啊  
  Why?

网友回答:

发表者:fallhunter

 
  我试了,是编译器的原因!  
 

发表者:caomuyong1

字节对齐是可以设置的。如果VC中可以“设置”——》“C/C++”标签下的“Category”选择“Code   Generation”页的“Struct   member   alignment”就可以进行设置了。  
   
  另外,这种题面试经常问,唉,其实这有标准答案吗?不同的操作系统答案不同。  
  如果各位有兴趣而又有条件的话,可以拿到win3.1或TRU-64UNIX试一下,和你们平时见到的结果都不同呢。

发表者:iicup

如果在VC   6.0下,  
  改成下面的样子看看:  
   
  #pragma   pack(1)     //   添加  
  typedef   struct  
  {  
      short   int   bfType;                         /*   文件类型,   必须为   "BM"   (0x4D42)   */  
      long   bfSize;                         /*   文件的大小(字节)   */  
      short   int     bfReserved1;               /*   保留,   必须为   0   */  
      short   int     bfReserved2;               /*   保留,   必须为   0   */  
      long   bfoffBits;                   /*   位图阵列相对于文件头的偏移量(字节)   */  
  }   BITMAPFILEHEADER;               /*   文件头结构   */  
  #pragma   pack()   //   添加  
 


 

 
热门推荐笔记本: 七喜笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved