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
};