嵌入式與韌體
以C語言的位元欄位(bit-field)結構來表示週邊電路的暫存器時,需要注意的地方下列何者正確?
- A使用位元欄位後,程式一定會變快2倍
- B位元欄位的位元排列順序等可依編譯器而異,換成別的編譯器可能會操作到與意圖不同的位元
- C位元欄位無法表示8位元以上的值
查看答案與解析
正確答案:B. 位元欄位的位元排列順序等可依編譯器而異,換成別的編譯器可能會操作到與意圖不同的位元
位元欄位寫起來易讀,但在C語言的規格中,結構內的位元是從高位開始排列還是從低位開始排列、欄位跨越邊界時的處理、存取的寬度等,都交由編譯系統決定。因此即使在某個編譯器上正確運作,在別的編譯器或CPU上也可能讀寫到不同的位元。微控制器廠商提供的標頭檔,多半是以遮罩與位移寫成的。
- A. 速度不一定會提升。
- B. 正確。需要注意可攜性。
- C. 也能表示8位元以上的欄位。