#define and enum compiler error

Yes, but you can't do them BOTH...

Well, yes I agree. In much the same way you can't use the same variable name for different purposes inside your code. Nor can you do:

int foo = 42;
int foo = 42;

The OP said:

if I remove the #defines I would have to change the code to use enum.

I assumed he meant change where they were used. I don't see why such a change is necesssary. In my example above (reply #13) in either case you could write:

int foo = TEST1;

So he doesn't need to change that code.