Ich habe nach immer vorbei an der 32. Flagge ein Problem mit meinem enum
gegenüber:Lange Enum mit bitweise
enum ConditionType_t {
CONDITION_NONE = 0,
CONDITION_LIGHT = 1 << 0,
CONDITION_INFIGHT = 1 << 1,
CONDITION_MUTED = 1 << 2,
...
CONDITION_LUCKY = 1 << 32,
}
Zu wissen, dass enums
sind im Grunde 8bit
wird CONDITION_LUCKY
zum CONDITION_NONE
gleich sein. So implementiert ich C++11
‚s enum classes
:
enum class ConditionType_t : uint64_t {
CONDITION_NONE = 0,
CONDITION_LIGHT = 1 << 0,
CONDITION_INFIGHT = 1 << 1,
CONDITION_MUTED = 1 << 2,
...
CONDITION_LUCKY = 1 << 32,
}
Jetzt bekomme ich Millionen von Warnungen wie:
warning C4293: '<<' : shift count negative or too big, undefined behavior
Und Fehler wie:
error C2065: 'CONDITION_NONE' : undeclared identifier
Offenbar Bitverschiebung nicht zusammen bekommt mit enum classes
.
Irgendwelche Gedanken?
Was denken Sie macht, dass "' enums' sind grundsätzlich '8bit'"? – Dmitri