【发布时间】:2013-10-16 14:50:02
【问题描述】:
在结构上使用 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 代码,则可以复制前两个变量(前导码和长度)。控件完全乱了,最后三个变量上移了一个,也就是 crc = 0,source = crc,destination = source...
有人对我有什么好的建议吗?
【问题讨论】:
-
您还应该显示您使用的
memcpy代码。 -
你确定,在 HEADER 改变后,接收到的缓冲区有完全相同的变化吗?