保留的內存位置我有一個結構:如何編寫爲結構
struct foo{
uint8_t i1 : 4;
uint8_t i2 : 4;
uint8_t i3 : 4;
uint8_t i4 : 4;
}
現在,我有一個16位整數(叫它),我想寫的內存位置,對於這個結構,而不必這樣做:
foo1.i1 = (uint8_t)a>>12;
foo1.i2 = (uint8_t)a>>8;
foo1.i3 = (uint8_t)a>>4;
foo1.i4 = (uint8_t)a;
是否有一個選項可以將16位寫入foo1的內存位置。喜歡的東西:
*(*uint16_t)&foo1 = a;
第一個問題:你爲什麼要使用位域? –
體面的編譯器意識到你在做什麼 - 這可能是過早的優化。當然,如果編譯器反轉佈局(字節中的位順序未指定),那麼您的投射就是錯誤的。 – MSalters
@Neil使用位域有什麼問題? –