CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

有无哪位大哥大姐知道C\C++中怎样强制结构体紧凑分配空间?

楼主qi374420(表哥)2005-12-25 16:06:20 在 C/C++ / C++ 语言 提问

我结构体定义如下:  
  typedef   struct   tagDLCHeader{  
                                  unsigned   char   DesMAC[6];                       /*   destination   HW   addrress   */  
                                  unsigned   char   SrcMAC[6];                       /*   source   HW   addresss   */  
                                  unsigned   short   Ethertype;                     /*   ethernet   type   */  
                  }DLCHEADER,   *PDLCHEADER;  
   
                  //   ARP   Frame  
                  typedef   struct   tagARPFrame{  
                                  unsigned   short   HW_Type;                     /*   hardware   address   */  
                                  unsigned   short   Prot_Type;                 /*   protocol   address   */  
                                  unsigned   char   HW_Addr_Len;               /*   length   of   hardware   address   */  
                                  unsigned   char   Prot_Addr_Len;           /*   length   of   protocol   address   */  
                                  unsigned   short   Opcode;                       /*   ARP/RARP   */  
                                  unsigned   char   Send_HW_Mac[6];       /*   sender   hardware   address   */  
                                  unsigned   long   Send_Prot_IP;         /*   sender   protocol   address   */  
                                  unsigned   char   Targ_HW_Mac[6];       /*   target   hardware   address   */  
                                  unsigned   long   Targ_Prot_IP;         /*   target   protocol   address   */  
                                  unsigned   char   padding[18];  
                  }ARPFRAME,   *PARPFRAME;  
   
                  //   ARP   Packet   =   DLC   header   +   ARP   Frame  
                  typedef   struct   tagARPPacket{  
                                  DLCHEADER           dlcHeader;  
                                  ARPFRAME             arpFrame;  
                  }ARPPACKET,   *PARPPACKET;                     //各位大哥这个结构体中出了问题.  
  在struct   tagARPPacket中我发现dlcHeader和arpFrame之间不知为什么多了一个字节,由于我是填充ARP包发送的,多了一个字节导致填充的数据错位,我在一个论坛上看到可以"加上一对编译指令,强制结构体紧凑分配空间,令多的那个字节消失",但那个论坛没有明确说出如何强制结构体紧凑分配空间,网上找了很久都找不到,听说CSDN高手如林,赶来求教!谢谢! 问题点数:30、回复次数:6Top

1 楼qi374420(表哥)回复于 2005-12-25 16:08:52 得分 0

自己顶,在线等!Top

2 楼qi374420(表哥)回复于 2005-12-25 16:23:52 得分 0

up,会不会没人知道呢?Top

3 楼lexchou(龍子龍孫)(本人已死)(有事烧纸)回复于 2005-12-25 16:32:55 得分 10

#pragma   pack(1)Top

4 楼corrupt(喜欢 睡在床板下 的思考)回复于 2005-12-25 16:49:24 得分 20

#pragma   pack(1)  
   
  本来是   4   的,这样就可以不用了  
   
  但是系统效率就   有点差了Top

5 楼qi374420(表哥)回复于 2005-12-25 16:51:42 得分 0

龙子龙孙大哥,请问是不是将#pragma   pack(1)像头文件一样加在程序的开头?Top

6 楼qi374420(表哥)回复于 2005-12-25 16:59:03 得分 0

谢谢两位,结帐.Top

相关问题

  • C++中的强制类型转换
  • 请问在c/s下如何强制关闭窗口?
  • Linux C下socker编程,如何强制不分片?
  • 请问C语言的强制转换问题!
  • c语言的指针强制转换内部是如何实现的?
  • 在C++BULDER中如何和DELPHI一样进行强制类型转换?
  • 用C#或VB.NET操作EXCEL时候,怎么才能强制保存EXCEL文件
  • 才学C#就要麻烦各位大哥大姐了
  • 哪位大哥大姐,能给个c#作的摄像头程序代码阿?
  • 讨论...关于c++中强制类型转换原理 ,请各位高手多多提供意见啊...

关键词

  • hardware
  • hw
  • dlcheader
  • unsigned
  • prot
  • arp
  • address
  • protocol
  • short
  • typedef struct

得分解答快速导航

  • 帖主:qi374420
  • lexchou
  • corrupt

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo