第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C / C ++:強(qiáng)制位域順序和對(duì)齊

C / C ++:強(qiáng)制位域順序和對(duì)齊

C++ C
qq_花開(kāi)花謝_0 2019-09-02 10:59:05
我讀到結(jié)構(gòu)中位字段的順序是特定于平臺(tái)的。如果我使用不同的特定于編譯器的打包選項(xiàng),這將保證數(shù)據(jù)在寫入時(shí)以正確的順序存儲(chǔ)嗎?例如:struct Message{  unsigned int version : 3;  unsigned int type : 1;  unsigned int id : 5;  unsigned int data : 6;} __attribute__ ((__packed__));在具有GCC編譯器的英特爾處理器上,字段在顯示時(shí)顯示在內(nèi)存中。Message.version是緩沖區(qū)中的前3位,然后Message.type是。如果我找到各種編譯器的等效結(jié)構(gòu)包裝選項(xiàng),這將是跨平臺(tái)的嗎?
查看完整描述

3 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

不,它不是完全便攜的。結(jié)構(gòu)的包裝選項(xiàng)是擴(kuò)展,并且它們本身不是完全可移植的。除此之外,C99§6.7.2.1第10段說(shuō):“單位內(nèi)的位域分配順序(從高階到低階或低階到高階)是實(shí)現(xiàn)定義的?!?/p>


例如,即使是單個(gè)編譯器也可能根據(jù)目標(biāo)平臺(tái)的字節(jié)順序不同地放置位字段。


查看完整回答
反對(duì) 回復(fù) 2019-09-02
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

從編譯器到編譯器,位字段差異很大,抱歉。

對(duì)于GCC,大端機(jī)器首先布置了大端,而小端機(jī)器首先布置了小端。

K&R說(shuō)“結(jié)構(gòu)的相鄰[bit-]字段成員在依賴于實(shí)現(xiàn)的方向上被打包到依賴于實(shí)現(xiàn)的存儲(chǔ)單元中。當(dāng)另一個(gè)字段后面的字段不適合時(shí)...它可以在單元之間分割,或者單元可以是寬度為0的未命名字段強(qiáng)制填充......“

因此,如果您需要與機(jī)器無(wú)關(guān)的二進(jìn)制布局,則必須自己完成。

最后一個(gè)語(yǔ)句也適用于填充引起的非位域 - 但是所有編譯器似乎都有一些強(qiáng)制結(jié)構(gòu)字節(jié)打包的方法,正如我在GCC中發(fā)現(xiàn)的那樣。


查看完整回答
反對(duì) 回復(fù) 2019-09-02
  • 3 回答
  • 0 關(guān)注
  • 701 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)