在结构上使用memcpy时遇到问题。结构使用memcpy
考虑以下结构
struct HEADER
{
unsigned int preamble;
unsigned char length;
unsigned char control;
unsigned int destination;
unsigned int source;
unsigned int crc;
}
如果我使用memcpy将数据从接收缓冲区拷贝到这个结构的副本是好的,但如果我重新声明结构为以下内容:
struct HEADER
{
unsigned int preamble;
unsigned char length;
struct CONTROL control;
unsigned int destination;
unsigned int source;
unsigned int crc;
}
struct CONTROL
{
unsigned dir : 1;
unsigned prm : 1;
unsigned fcb : 1;
unsigned fcb : 1;
unsigned function_code : 4;
}
现在如果我使用与以前相同的memcpy代码,则前两个变量(前导码和长度)被复制OK。控制是完全搞砸了,最后三个变量转移了一个,也就是crc = 0,source = crc,destination = source ...
ANyone对我有什么好的建议吗?
您还应该显示您使用的'memcpy'代码。 – user694733
你确定,在HEADER改变后,接收缓冲区有完全相同的改变? – zoska