在结构上使用 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 代码,则前两个变量( preamble 和 length )被复制好。控件完全搞砸了,最后三个变量上移了一个,即 crc = 0,source = crc,destination = source...
有人对我有什么好的建议吗?