為什么int會報錯?
出問題的地方不在于通過結構體的指針訪問位域,而是試圖取位域的引用,這是做不到的。位域用 unsigned int 和 unsigned char 的差別在于用 unsigned int 可以聲明位寬大于 unsigned char 的位域。
例如在 unsigned char 位寬為8,unsigned int 位寬為32的時候,試圖聲明 unsigned char x : 12 會報錯,而 unsigned int x : 12 就沒問題(當然,這個大小超過 unsigned int 的位寬時也會報錯)。