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

📄 subject_16036.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:16036 发表者:shiyu 发表日期:2002-09-25 08:47:12
<br>主题:抱文结构问题
<br>内容:我现做一个系统,服务器的操作系统为16位,客户端为32位。在UDP报文格式上为和要定义为偶数个字节,不然在客户端接收到的报文会错位。例如以下时间结构<BR><BR>typedef struct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR> { unsigned int year;<BR>&nbsp;&nbsp; char day ;<BR>&nbsp;&nbsp; char month;<BR>&nbsp;&nbsp; char minute;<BR>&nbsp;&nbsp; char hour ;<BR>&nbsp;&nbsp; char NoUse ;//如果去掉这一字节,则在解析(int)millsecond 时会对不准<BR>&nbsp;&nbsp; char second;<BR>&nbsp;&nbsp; int&nbsp;&nbsp;milisecond;<BR>&nbsp;&nbsp; }time_struc;<BR>这个问题是由系统造成的吗?需要如何避免呢?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Tuu Puu 回复日期:2002-09-25 09:10:46
<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>
回复者:shiyu 回复日期:2002-09-25 09:22:27
<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>
<font color=red>答案被接受</font><br>回复者:Tuu Puu 回复日期:2002-09-25 10:39:17
<br>内容:你看看操作系统、编译原理方面的书就能明白,说起来比较费劲,结构体在内存里有个“字节对齐”一说,这个通常是对齐到2、4、8什么的,VC的编译器里就这个选项,如果选的不是1字节对齐,而且结构体成员长度和不是一个对应的倍数就会自动补,这样就会<BR><BR>sizeof(struct) != sizeof( struct成员成都和)<BR><BR>有两种方法可以避免,一种是在结构体中补保留成员(你看看网络部分的头文件里定义的结构体就能发现这点),或者修改编译器选项,指定1字节对齐(vc很好改,别的操作系统的编译器就不清楚了)。多半是采用第一种方法较好,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>
回复者:Tuu Puu 回复日期:2002-09-25 11:01:54
<br>内容:另你这16位操作系统的int长度应该是2,32的int长度是4,这样day、month明显的会不对,因为它会把year,day,month当成一个整数,相当与32位上year是16位上三个的合并,明显有问题
<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 + -