#define and enum compiler error

Basically enum symbols cannot be used as #define symbols ...

Why not?

Because "#define symbols" are converted by the pre-processor before the compiler gets to look at the code. You can do other variations, or you might have a different definition of "#define symbol", but that's the way I see it:

#define PREPROC_SYMBOL 0
#define PREPROC_SYM2 foo_bar

enum foo {
 ENUM_SYMBOL = PREPROC_SYMBOL;   /* OK */
 PREPROC_SYM2 = 1;   /* OK */
 PREPROC_SYM2 = PREPROC_SYMBOL;   /* OK */
 PREPROC_SYMBOL = 2;  /* NOT OK */
 ...  more
};