hur.cn - 华软网

 热门搜索

sizeof(BITMAPFILEHEADER) = 14;求解

  作者:未知    来源:网络    更新时间:2011/9/29
xp vc2005

我想把它移到qt上,移的过程发现14

我在qt看是16
---华软 网友回答---
C++">typedef struct tagBITMAPFILEHEADER {
        WORD    bfType;
        DWORD   bfSize;
        WORD    bfReserved1;
        WORD    bfReserved2;
        DWORD   bfOffBits;
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;

移到qt上,如何移最好?以下这样不行
C++">struct BITMAPFILEHEADER{
        quint16    bfType;
        quint32   bfSize;
        quint16    bfReserved1;
        quint16    bfReserved2;
        quint32   bfOffBits;
};

---华软网友回复---
定义前面忘记加:#pragma pack(1)了么?

---华软网友回复---
我啥也没动,随便新建个工程,就这样子,竟然14
---华软网友回复---
设置下字节对齐方式:

C++">#pragma pack(push, bfhead)
#pragma pack(1)

struct BITMAPFILEHEADER{
        quint16    bfType;
        quint32   bfSize;
        quint16    bfReserved1;
        quint16    bfReserved2;
        quint32   bfOffBits;
}
#pragma pack(pop, bfhead)

---华软网友回复---
刚学,都想用默认的.....
---华软网友回复---
不同环境字节对齐不一样,所以sizeof的值不同
---华软网友回复---
这个是不同开发环境默认的数据对齐位数不同导致的吧
我用VC6  默认是8  Sizeof的结果就是16
改成1或者2的话结果就是14啦~
VC2005和QT默认值多少我就不清楚了
2楼的:#pragma pack(1)就是把对齐位数改为1
VC6的话还可以在Project -> Setting -> C/C++ -> Code Generation -> Struct member Alignment那里设置
---华软网友回复---
谢谢4楼,结果正确,哈哈
---华软网友回复---
额,还有2楼      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。