共用方式為


編譯器警告 (層級 1) C4807

'operation' : 不安全的混用類型 'type' 和類型 'type' 的已簽名位元欄位

比較一位元帶正負號位元欄位與 bool 變數時,會產生這個警告。 因為一位元帶正負號位元欄位只能包含值 -1 或 0,所以比較它與 bool十分危險。 不會產生有關混合使用 bool 與一位元未帶正負號位元欄位的警告,因為它們與 bool 相同,而且只能保留 0 或 1。

範例

下列範例會產生 C4807:

// C4807.cpp
// compile with: /W1
typedef struct bitfield {
   signed mybit : 1;
} mybitfield;

int main() {
   mybitfield bf;
   bool b = true;

   // try..
   // int b = true;

   bf.mybit = -1;
   if (b == bf.mybit) {   // C4807
      b = false;
   }
}