C程式設計小問題 —— “error: #31: expression must have integral type“
阿新 • • 發佈:2020-12-09
1、使用結構體定義了位域時,習慣性的將整個結構體進行了位與操作。
結構體不能直接進行位操作,具體什麼原因網上查一下,我還不知道。但是今天定義了一個位域型別結構體,用來儲存幾個按鍵標誌,本來想著方便進行操作,就直接進行了位與,想著同時對多個引數進行轉換,結果編譯器報錯“表示式必須具有整型”。
所以還是老老實實一個一個位轉換吧……
typedef struct { uint8_t Bit0:1; uint8_t Flag0:1; // 按鍵處理標誌 uint8_t Bit1:1; uint8_t Flag1:1; // 按鍵處理標誌 uint8_t reserve:4; // 保留位 }Key; int main(void) { Key A ={0}; Key B ={1, 0, 0, 1, 3}; A &=B; ... }
**另外,結構體初變數始化賦值時候和陣列類似,每個成員變數進行對應方式的賦值,整個結構體賦值需要用大括號{}括起來,和陣列賦值類似,而不是直接賦值一個“0”哦。