C語(yǔ)言中 memcpy()與#pragma pack(1)聯(lián)用給結(jié)構(gòu)體賦值
在解決協(xié)議傳輸問(wèn)題中,
經(jīng)常會(huì)用到memcpy()對(duì)接收到的數(shù)據(jù)進(jìn)行搬運(yùn),
把接收到的數(shù)據(jù)搬運(yùn)到結(jié)構(gòu)體或者共用體,這樣就省去了協(xié)議的解析.
但是需要注意一個(gè)問(wèn)題,
就是結(jié)構(gòu)體中存在對(duì)齊的問(wèn)題,如下圖:


圖中加上#pragma pack(1)會(huì)改變結(jié)構(gòu)體的存儲(chǔ)方式,
加上#pragma pack(1)之后的結(jié)構(gòu)體才是連續(xù)的內(nèi)存.

測(cè)試:
運(yùn)行后輸出:
標(biāo)簽: