Ich habe schon andere gesehen, die Bitwise-OR verwenden, um Flags zu kombinieren:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN | JUMP | SHOOT;
So mache ich es auch.
Aber ich habe auch einige (nicht so viele) kombinierte Flags mit Addition gesehen:
#define RUN 0x01
#define JUMP 0x02
#define SHOOT 0x04
const byte madPerson = RUN + JUMP + SHOOT;
Welches ist "lesbarer"? (Welche werden Ihrer Meinung nach mehr Menschen erkennen?) Was ist die "Standard" -Methode, um dies zu tun? Welches bevorzugen Sie?
1<<0
,1<<1
,1<<2
, und so weiter. Wenn Sie viele Flags haben, wird es besser lesbar, leichter zu warten und weniger fehleranfällig. Wenn Sie beispielsweise alle 64-Bit-Werte eines 64-Bit-Inters packen, möchten Sie Tippfehler unbedingt vermeiden :) Auch Ihre Darstellung1
ist wichtig. Für eine 64-Bit-Ganzzahl in VS2010 denke ich, ist es1UI64
oder so ähnlich. Die Verwendung eines falschen Typs könnte Sie beißen.