Avviso del compilatore (livello 1) C4807
'operation': combinazione non affidabile del tipo 'type' e del campo di bit signed del tipo 'type'
Questo avviso viene generato quando si confronta un campo di bit signed a un bit con una variabile bool
. Poiché un campo di bit signed a un bit può contenere solo il valore -1 o 0, è pericoloso confrontarlo con bool
. Non viene generato alcun avviso relativo alla combinazione di campi di bit senza segno di tipo bool
e a un bit poiché sono identici a bool
e possono contenere solo 0 o 1.
L'esempio seguente genera l'errore 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;
}
}