I have this enum:
enum ButtonState { BUTTON_NORMAL = 0, BUTTON_PRESSED = 1, BUTTON_CLICKED = 2 }; const u8 NUM_BUTTON_STATES = 3;
Style-wise, it's just fine.
Pascal-based languages like Delphi allow array bounds to be specified as an enum type, so you can only use items of that specific type as an index.