Disons que j'ai un ensemble de drapeaux, encodés dans un uint16_t flags
. Par exemple AMAZING_FLAG = 0x02
,. Maintenant, j'ai une fonction. Cette fonction doit vérifier si je veux changer le drapeau, car si je veux le faire, je dois écrire en flash. Et c'est cher. Par conséquent, je veux un chèque qui me dit si flags & AMAZING_FLAG
est égal à doSet
. Ceci est la première idée:
setAmazingFlag(bool doSet)
{
if ((flags & AMAZING_FLAG) != (doSet ? AMAZING_FLAG : 0)) {
// Really expensive thing
// Update flags
}
}
Ce n'est pas une instruction if intuitive. Je pense qu'il devrait y avoir un meilleur moyen, quelque chose comme:
if ((flags & AMAZING_FLAG) != doSet){
}
Mais cela ne fonctionne pas réellement, true
semble être égal à 0x01
.
Alors, y a-t-il un bon moyen de comparer un peu à un booléen?
(flags & AMAZING_FLAG) && doSet
:?