1. 程式人生 > 其它 >C程式設計小問題 —— “error: #31: expression must have integral type“

C程式設計小問題 —— “error: #31: expression must have integral type“

技術標籤:C/C++c++

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”哦。