Compartir a través de


Advertencia del compilador (nivel 1) C4807

'operation': combinación no segura del tipo 'type' y el campo de bits con signo de tipo 'type'

Observaciones

Esta advertencia se genera al comparar un campo de bits con signo de un bit con una variable bool . Puesto que el campo de bits con signo de un bit solo puede contener los valores -1 o 0, es arriesgado compararlo con bool. No se generan advertencias con la mezcla de bool y campos de bits sin signo de un bit, ya que son idénticas a bool y solo pueden contener 0 o 1.

Ejemplo

En el ejemplo siguiente se genera la advertencia 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;
   }
}