日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]今天在看代碼的時候看到以下代碼:structdsi_ctrl_hdr{chardtype;/*datatype*/charlast;/*lastinchain*/charvc;/*virtualchan*/charack;/*askACKfromperipheral*/charwait;/*ms*/shortdlen;/*16bits*/}__packed;結(jié)構(gòu)

今天在看代碼的時候看到以下代碼:


structdsi_ctrl_hdr{

chardtype;/*datatype*/

charlast;/*lastinchain*/

charvc;/*virtualchan*/

charack;/*askACKfromperipheral*/

charwait;/*ms*/

shortdlen;/*16bits*/

}__packed;

結(jié)構(gòu)體的末尾用__packed進(jìn)行限定。因?yàn)椴欢溆梅?,于是通過百度整理了__packed的作用及用法。

__packed 限定符將所有有效類型的對齊邊界設(shè)置為 1。這就意味著:

1、不會插入填充以對齊壓縮對象

2、使用未對齊的訪問讀取或?qū)懭雺嚎s類型的對象。


使用 __packed 限定符聲明結(jié)構(gòu)或聯(lián)合后,__packed 將應(yīng)用于該結(jié)構(gòu)或聯(lián)合的所有成員。成員之間或結(jié)構(gòu)末尾均沒有填充。必須使用 __packed 聲明壓縮結(jié)構(gòu)的所有子結(jié)構(gòu)??梢詥为?dú)壓縮非壓縮結(jié)構(gòu)的整型子字段。

用法
若要將結(jié)構(gòu)映射到外部數(shù)據(jù)結(jié)構(gòu)或訪問未對齊數(shù)據(jù),__packed 限定符非常有用;但由于訪問開銷相對較高,通常對節(jié)省數(shù)據(jù)大小并沒有什么幫助。通過僅對需要壓縮的結(jié)構(gòu)中的字段進(jìn)行壓縮,可以減少未對齊訪問的數(shù)量。


限制
以下限制適用于使用 __packed 的場合:

1、__packed 限定符不能用于以前未使用 __packed 聲明的結(jié)構(gòu)。


2、與其他類型限定符不同,不能同時具有同一結(jié)構(gòu)類型的 __packed 版本和非 __packed 版本。


3、__packed 限定符不影響整型局部變量。


4、壓縮結(jié)構(gòu)或聯(lián)合與相應(yīng)的非壓縮結(jié)構(gòu)的分配不兼容。由于這些結(jié)構(gòu)具有不同的內(nèi)存布局,因此,將壓縮結(jié)構(gòu)分配給非壓縮結(jié)構(gòu)的唯一辦法是逐個字段進(jìn)行復(fù)制。


5、沒有定義對 __packed 進(jìn)行類型轉(zhuǎn)換所產(chǎn)生的影響。也沒有定義將非壓縮結(jié)構(gòu)類型轉(zhuǎn)換為壓縮結(jié)構(gòu)類型所產(chǎn)生的影響??梢院戏ǖ貙⒅赶蛘偷闹羔橆愋惋@式或隱式轉(zhuǎn)換為指向壓縮整型的指針類型。也可以對 char 類型進(jìn)行 __packed 類型轉(zhuǎn)換。


6、不存在壓縮數(shù)組類型。壓縮數(shù)組是指具有壓縮類型的對象數(shù)組。數(shù)組中沒有進(jìn)行填充。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉