送分问题。。。关于sizeof 好象要用sizeof(struct TEST)吧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在project/setting下的 C/C++ 中的 project options 中加一个参数 /Zp1, 表示压缩单字节存储,要不然,系统为了存取方便会用整数字节存储,导致大小不对 对不起, 刚刚是对wwwunix([email protected])说的。TO egyptcaesar(笨小孩): 谢谢你, 但可以不可以请你说清楚一点, 有Compile ErrorC:\Temp\DosPro\Test1\driver.cpp(5) : warning C4653: compiler option 'structure packing (/Zp)' inconsistent with precompiled header; current command-line option ignored DWORD的地址要从4的倍数开始分配,WORD和byte的地址要从2的倍数开始分配,且windows是32位的,空间分配按DWORD算,这样:struct TEST{ byte byType;//0-1 WORD wDataLen;//2-3 DWORD dwDataOfst;//4-7};struct TEST{ byte byType;//0-1 DWORD dwDataOfst;//4-7 WORD wDataLen;//8-9,10-11free};表达得不好,不知满意否? TO egyptcaesar(笨小孩)和Regen219(雨) :上述问题解决已经了, 待会儿一定给分的。。另一些问题 :1. 为什么加了那个Compile 参数就不能加breakpoint了?2. 哪些Compile参数需要特别的注意了?3. 对于dutsf(阿石)所说的那些原理不大清楚, 可以不可以补充一点了?继续加分。 哈哈!bluekite(bluekite) 你又回来了啊!恭喜了!:) 我想111222 知道你回来了,肯定会..........................高兴的! 这是内存分配的问题,如果是DWORD对齐方式:BYTE 可以分配任何起始的地址WORD 只能分配偶数地址DWORD 只能分配4的倍数的地址QWORD 和 DWORD 一样,因为是DWORD对齐方式你规定的结构分配的顺序不能变struct TEST{ byte byType; //地址 0 DWORD dwDataOfst; //地址 4 WORD wDataLen; //地址 8};下面的程序就是 BYTE 对齐的#pragma pack(push) //保存对齐状态#pragma pack(1) //1:BYTE 对齐, 2:WORD 对齐, 4:DWORD, 8:QWORD, 16:...struct TEST{ byte byType; //地址 0 DWORD dwDataOfst; //地址 1 //此时允许任何地址 WORD wDataLen; //地址 5 //此时允许任何地址};#pragma pack(pop) //回复对齐状态 在setting-c++-code generation里設置對齊方式為1byte TO konfyt(水果唐) :呵呵, 我终于回来了, 能再见到你们我也很高兴。。TO ybchen(): 我终于明白了, 谢谢但还有两个问题了, 请你们多多回答。 这里是不能再加分了, 如果有人回答了的话, 我会另开贴子来给分的。另一些问题 :1. 为什么加了那个Compile 参数就不能加breakpoint了?2. 哪些Compile参数需要特别的注意了? VC怎样在class view中隐藏某些类和函数 请教医保系统的开发经验..... CListCtr 很奇怪的问题.新人求高人指点 求USB连接代码 vc中的数据库问题,请指教,谢谢 关于GetDiskFreeSpace()和GetProcessTimes() 请教getmodulehandle() 怎样获取DLL文件函数的参数信息? 请教! 求救!!!请问怎样实现用电脑给手机发送短消息! VC如何针对SQL Server存取BMP文件? word中的格式刷怎么用的?请指点!
C:\Temp\DosPro\Test1\driver.cpp(5) : warning C4653: compiler option 'structure packing (/Zp)' inconsistent with precompiled header; current command-line option ignored
struct TEST
{ byte byType;//0-1
WORD wDataLen;//2-3
DWORD dwDataOfst;//4-7
};
struct TEST
{
byte byType;//0-1
DWORD dwDataOfst;//4-7
WORD wDataLen;//8-9,10-11free
};
表达得不好,不知满意否?
1. 为什么加了那个Compile 参数就不能加breakpoint了?
2. 哪些Compile参数需要特别的注意了?
3. 对于dutsf(阿石)所说的那些原理不大清楚, 可以不可以补充一点了?继续加分。
BYTE 可以分配任何起始的地址
WORD 只能分配偶数地址
DWORD 只能分配4的倍数的地址
QWORD 和 DWORD 一样,因为是DWORD对齐方式
你规定的结构分配的顺序不能变
struct TEST
{
byte byType; //地址 0
DWORD dwDataOfst; //地址 4
WORD wDataLen; //地址 8
};下面的程序就是 BYTE 对齐的#pragma pack(push) //保存对齐状态
#pragma pack(1) //1:BYTE 对齐, 2:WORD 对齐, 4:DWORD, 8:QWORD, 16:...struct TEST
{
byte byType; //地址 0
DWORD dwDataOfst; //地址 1 //此时允许任何地址
WORD wDataLen; //地址 5 //此时允许任何地址
};#pragma pack(pop) //回复对齐状态
但还有两个问题了, 请你们多多回答。 这里是不能再加分了, 如果有人回答了的话, 我会另开贴子来给分的。另一些问题 :
1. 为什么加了那个Compile 参数就不能加breakpoint了?
2. 哪些Compile参数需要特别的注意了?