At 1:32 PM -0600 2/9/03, ron minnich wrote:
anybody object to anonymous enums? I've gotten used to them in Plan 9 and like them. Instead of this:
#define FLOPPY_DEVICE 0 #define PARALLEL_DEVICE 1 #define COM2_DEVICE 2 #define COM1_DEVICE 3 #define SWC_DEVICE 4 #define MOUSE_DEVICE 5 #define KBC_DEVICE 6 #define GPIO_DEVICE 7 #define ACB_DEVICE 8 #define FSCM_DEVICE 9 #define WDT_DEVICE 10
you get this: enum { FLOPPY_DEVICE=0, PARALLEL_DEVICE, COM2_DEVICE, COM1_DEVICE, SWC_DEVICE, MOUSE_DEVICE, KBC_DEVICE, GPIO_DEVICE, ACB_DEVICE, FSCM_DEVICE, WDT_DEVICE };
The advantages I see
- somewhat less prone to error
- looks nicer
- the big one: enums are first-class objects to the compiler, and #defines are pertty much ripped out by the compiler and disappear into constant numbers.
comments?
ron
I think they work well when you have a sequence of numbers like this, but I would rather see each enum explicitly given it's value as in:
enum { FLOPPY_DEVICE=0, PARALLEL_DEVICE=1, COM2_DEVICE=2, COM1_DEVICE=3, SWC_DEVICE=4, MOUSE_DEVICE=5, KBC_DEVICE=6, GPIO_DEVICE=7, ACB_DEVICE=8, FSCM_DEVICE=9, WDT_DEVICE=10 };
Otherwise you're forever trying to work out what the actual value is.
Where it doesn't work is when you have a bunch of random defines with unrelated values, or values that jump about all over the place.
Greg