struct BITMAPFILEHEADER
{
WORD bfType; 00()()
DWORD bfsize; 000 0
WORD bfreserved1; 00 00
WORD bfreserved2;
DWORD bfoffBits; 0000
}這樣sizeof(BITMAPFILEHEADER) 應該是16阿/為甚麼計算出為14呢/?
()()表示要補上的空間]
{
WORD bfType; 00()()
DWORD bfsize; 000 0
WORD bfreserved1; 00 00
WORD bfreserved2;
DWORD bfoffBits; 0000
}這樣sizeof(BITMAPFILEHEADER) 應該是16阿/為甚麼計算出為14呢/?
()()表示要補上的空間]
解决方案 »
- vc.net关于gsm收发短信
- 请教大虾,关于操作快捷方式的问题!!!
- ADO访问ACCESS2000 这条语句错在何处? m_pConnection->Open(_bstr_t(strSQL),"","",adModeUnknown);strSQL是。。。
- 高手帮忙,如何在chtmlview中显示一个格式为mhtml的数据???
- 问一个WIN32API函数~
- 请问,如何按格式读取文本文件?每次读取一个中文词,然后存放到CStringArray里
- 谁有修改EXE文件头信息,让其自动调用DLL的代码!给我一份好吗?
- 从C转到VC++出现的问题,请教!
- 关于注册表方面的几个问题,这是我能加的最高分!
- CDHtmlDialog 在加载本地的 html时,jquery的库不能用,在浏览器中页面显示正常
- 急!请问如何在VC程序一运行时就直接运行一个循环
- 求:《com技术内幕》的电子版和附书源码?
论坛说过这个问题,看看吧
DWORD占四个字节
struct BITMAPFILEHEADER
{
WORD bfType; //2
DWORD bfsize; //4
WORD bfreserved1; //2
WORD bfreserved2; //2
DWORD bfoffBits; //4
}()()表示要補上的空間] ? 什么意思?
结构体在定义的时候是不分配空间的,只有定义该结构体对象的时候才分配空间
不知道楼主补上空间是什么意思!
计算是14
前面加上#pragma pack(1)
这是VC的一种优化
DWORD×2+WORD×3 =14
#pragma pack(push) //保存对齐状态
#pragma pack(1)
#pragma pack(pop)
这个东西有没有?其次Alt+F7中的C/C++中的Code Generation中的struct member alignment是不是一个字节?
难道你的程序是win16的吗
如下: class Concrete1 {
public:
//……
private:
int val;
char bit1;
};除开其他影响,Concrete1 占8字节。
Concrete1 Object中,为使Object能够符合一个机器的word(32位操作系统中为4字节)边界,必须补充3bytes字节。此称为边界调整。边界调整一般由编译器完成。
DWORD占四个字节
struct BITMAPFILEHEADER
{
WORD bfType; //2
/* ...... 2 */
DWORD bfsize; //4
WORD bfreserved1; //2
WORD bfreserved2; //2
DWORD bfoffBits; //4
}
struct xyz
{
xyz(){x=0;y=0;z=0;};
int x;
int y;
int z;
};
占几个字节?
DWORD占四个字节
struct BITMAPFILEHEADER
{
WORD bfType; //2
/* ...... 2 */
DWORD bfsize; //4
WORD bfreserved1; //2
WORD bfreserved2; //2
DWORD bfoffBits; //4
}
應該是16阿!!
sizeof出來卻是14,是我只知其一不知其二麼/
#include <pshpack2.h>其中有#pragma pack(2), 把结构体的对齐方式设为了二字节对齐。