⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_36610.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:36610 发表者:icemen 发表日期:2003-04-17 09:02:43
<br>主题:求助啊!
<br>内容:typedef struct tagICE_SLIDE_HEADER{<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned char IdString[17];&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned char TypeIndi;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned char LevelIndi;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned short int&nbsp;&nbsp;&nbsp;&nbsp;HightX;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned short int&nbsp;&nbsp;&nbsp;&nbsp;HightY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned short int&nbsp;&nbsp;&nbsp;&nbsp;HardFill;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned short int&nbsp;&nbsp;&nbsp;&nbsp;TestNumber; <BR>} ICE_SLIDE_HEADER,* LPICE_SLIDE_HEADER;<BR><BR>在VC6.0 WINDOWS2000下用sizeof(ICE_SLIDE_HEADER)计算竟然得出32的结果(应是31的嘛),而且IdString[17]的17改为16 15 ..均为32!<BR>这是为何?难道是VC6.0 的BUG?<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:么眉的弟弟 回复日期:2003-04-17 11:44:17
<br>内容:#pragma pack (n)<BR>The pack (n) option sets the current pack size to a specific value: 1, 2, 4, 8, or 16.<BR><BR><BR>你在程序里设定#pragma pack(1)<BR>就可以看到差别了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:么眉的弟弟 回复日期:2003-04-17 13:24:34
<br>内容:结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间.<BR><BR>例如,struct test {<BR>char x1;<BR>short x2;<BR>float x3;<BR>char x4;<BR>};<BR>结构的第一个成员x1,其偏移地址为0,占据了第1个字节。第二个成员x2为short类型,其起始地址必须2字节对界,因此,编译器在x2和x1之间填充了一个空字节。结构的第三个成员x3和第四个成员x4恰好落在其自然对界地址上,在它们前面不需要额外的填充字节。在test结构中,成员x3要求4字节对界,是该结构所有成员中要求的最大对界单元,因而test结构的自然对界条件为4字节,编译器在成员x4后面填充了3个空字节。整个结构所占据空间为12字节。<BR><BR>#pragma pack ([n])伪指令允许你选择编译器为数据分配空间所采取的对界策略<BR>n=1:所有数据将会在任意字节单位上对界,不过会导致程序速度下降<BR>n=2:所有非字节数据将会在偶数地址单元上对界<BR>n=4:小于4字节的数据按其原有长度对界,其余数据按4字节对界。<BR>n=8:小于8字节的数据按其原有长度对界,其余数据按8字节对界。<BR>n=16:小于16字节的数据按其原有长度对界,其余数据按16字节对界。<BR><BR>在Microsfot Visual C++中,命令行参数/Zp[n]可以改变缺省对界条件
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -