x32 - microsoft visual c++ 2010 x86
Advertencia C4800: ''int'': forzando el valor a bool ''true'' o ''false''(advertencia de rendimiento) (3)
Tengo este problema en mi código:
bool CBase::isNumber()
{
return (id & MID_NUMBER);
}
bool CBase::isVar()
{
return (id & MID_VARIABLE);
}
bool CBase::isSymbol()
{
return (id & MID_SYMBOL);
}
¿Dónde está la declaración de id y MID_NUMBER? ¿Estás seguro de que no son BOOL de estilo windef en lugar de bools (en minúsculas)? Los BOOL han estado en windef durante décadas como un int. son anteriores a Bools de C ++ y muchos desarrolladores aún los utilizan.
FYI: Casts no ocultará la advertencia por diseño .
Algo como
return (id & MID_NUMBER) != 0;
debe indicar claramente "Quiero comprobar si este valor es cero o no" y dejar que el compilador esté contento
Utilizar el !! idioma, por ejemplo
bool CBase::isNumber()
{
return !!(id & MID_NUMBER);
}