Earlier quoted context omitted.
The preprocessor is a part of the standardized translation process, and if the standard says that certain things are not allowed in a well-formed C program, it does not matter at which stage the compiler is.
I'd be glad if you can pinpoint the location in the C standard where this constraint is given.
You can redefine keywords in your code, but they must not be defined when including standard headers (for obvious reasons).