Given an enumeration defined like so:
enum DebugModeType {
DebugModeNone = 0,
DebugModeButton = 1,
DebugModeFPS = 2,
DebugModeData = 4
};
#define DebugMode DebugModeButton|DebugModeData
I expect the value of DebugMode&DebugModeFPS to be 0, but I observe it to be 1.
You need parentheses in your macro to overcome operator precedence:
As-is:
DebugMode & DebugModeFPS=
DebugModeButton | DebugModeData & DebugModeFPS(which is parsed as
DebugModeButton | (DebugModeData & DebugModeFPS))=
DebugModeButton | (4 & 2)=
DebugModeButton | 0=
DebugModeButton=
1With parentheses as I suggest:
=
(DebugModeButton | DebugModeData) & DebugModeFPS=
5 & DebugModeFPS=
5 & 2=
0