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.