首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

强制字节对齐方式,该如何处理

2012-03-18 
强制字节对齐方式刚才的问题http://community.csdn.net/Expert/topic/5409/5409821.xml?temp.3010675很感

强制字节对齐方式
刚才的问题
http://community.csdn.net/Expert/topic/5409/5409821.xml?temp=.3010675
很感谢大家的热烈回答

现在我的问题是如何使他发送的数据包是60个字节的

我用ARPPACKET填充数据包,发送前还要把他给一个char类型
u_char   packet[60]={0};
ARPPACKET   arpPacket;
//填充arpPacket
memcpy(packet,&arpPacket,60);
然后就是发送packet数据包了

如何使packet不考虑对齐?把arpPacket复制给packet


[解决办法]
试试
#pragma pack(0)
吧。
[解决办法]
#pragma pack(push, 1)

typedef struct tagDLCHeader
{
unsigned char DesMAC[6]; //这个长度是6
unsigned char SrcMAC[6]; //这个长度是6
unsigned short Ethertype; //这个长度是2

} DLCHEADER, *PDLCHEADER;

typedef struct tagARPFrame
{
unsigned short HW_Type; 这个长度是2
unsigned short Prot_Type; 这个长度是2
unsigned char HW_Addr_Len; 这个长度是1
unsigned char Prot_Addr_Len; 这个长度是1
unsigned short Opcode; 这个长度是2
unsigned char Send_HW_Addr[6]; 这个长度是6
unsigned long Send_Prot_Addr; 这个长度是4
unsigned char Targ_HW_Addr[6]; 这个长度是6
unsigned long Targ_Prot_Addr; 这个长度是4
unsigned char padding[18];这个长度是18
} ARPFRAME, *PARPFRAME;

typedef struct tagARPPacket
{
DLCHEADER dlcHeader;
ARPFRAME arpFrame;
} ARPPACKET, *PARPPACKET;

#pragma pack(pop)

[解决办法]
也可以修改编译选项里面的东西,使1字节对齐
[解决办法]
#pragma pack(push, 1)和#pragma pack(pop)是什么意思哟
我发现只有visual studio编译器才有。。。

热点排行