看板 C_and_CPP 關於我們 聯絡資訊
看code時有看到這樣的寫法. .. struct _test { unsigned int a :1; unsigned int b :7; unsigned short c : 2; unsigned short d : 6; }; 上面是我自己胡亂舉例的, 所以想問說這樣寫法的解釋 unsinged int a :1; 表示 a被宣告4byte的空間, 但只佔用1bit ? 另外這樣的寫法是不是再搭配個 __attribute__((packed)) 會比較適合? 以上面的 struct 來看, 要是沒有加__attribute__ ... 使用sizeof就是4Byte, 如果有加, 就是2Byte. 謝謝. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.146.11.35
AJE:印象中 __attribute__((packed)) 不是標準語法 所以要視情況 01/08 14:10
AJE:使用 另外 使用類似__attribute__((packed))的語法會增加存 01/08 14:11
AJE:取loading 01/08 14:11
holymars:bit field和alignment是兩回事 01/08 14:25
holymars:你最後那個4Bytes 2Bytes是alignment的關係 01/08 14:25
eleghost:回樓上 , 我是用gcc toolcahin所以可支援這類語法.. 01/08 15:17
eleghost:請問holymars, bit-field是我上面的意思嗎?就是宣告4B 01/08 15:17
eleghost:但只用1 bit ? thanks! 01/08 15:18
aecho:我所看過的__attribute__,文件他是說gcc和MSVC的語法不一樣 01/08 23:13
aecho:不過那是講呼叫慣例的宣告~~ __attribute__((__cdecl)) ... 01/08 23:14