Dela via


Kompilatorvarning (nivå 1) C4807

"operation" : osäker blandning av typen "typ" och ett signerat bitfält av typen "typ"

Anmärkningar

Den här varningen genereras när du jämför ett enbits signerat bitfält med en bool variabel. Eftersom ett enbits, signerat bitfält bara kan innehålla värdena -1 eller 0 är det farligt att jämföra det boolmed . Inga varningar genereras om blandning av bool och enbits, osignerade bitfält, eftersom de är identiska med bool och bara kan innehålla 0 eller 1.

Example

I följande exempel genereras 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;
   }
}