Digamos que tengo un conjunto de banderas, codificadas en uint16_t flags. Por ejemplo, AMAZING_FLAG = 0x02. Ahora tengo una función. Esta función necesita verificar si quiero cambiar la bandera, porque si quiero hacer eso, necesito escribir en flash. Y eso es caro. Por lo tanto, quiero un cheque que me diga si flags & AMAZING_FLAGes igual a doSet. Esta es la primera idea:
setAmazingFlag(bool doSet)
{
if ((flags & AMAZING_FLAG) != (doSet ? AMAZING_FLAG : 0)) {
// Really expensive thing
// Update flags
}
}
Esta no es una declaración if intuitiva. Siento que debería haber una mejor manera, algo como:
if ((flags & AMAZING_FLAG) != doSet){
}
Pero esto en realidad no funciona, trueparece ser igual a 0x01.
Entonces, ¿hay una manera ordenada de comparar un poco con un booleano?
(flags & AMAZING_FLAG) && doSet:?