在結構上使用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