通信里的组帧和解码,因为计算机是32位对齐或者64位对齐的,不同类型的成员在内存中的实际位置可能不是按8位对齐排列的。
如一个帧是这样的
typedef struct
{
quint8 head1;
quint16 packetSize;
quint8 head2;//地址不是3而是4
} PacketDef;
其他编译器里有如 __packed 这样的8位对齐填充关键字,不知VC++和 MINGW的GCC是什么?
------解决方案--------------------
#pragma pack(push) //保存对齐状态
#pragma pack(1)//设定为1字节对齐
//这里是你要对其的数据结构
#pragma pack(pop)//恢复对齐状态