Macro expansion happens just before compilation; you have the chance to alter the source code as it's being read by the reader just before compilation.
But I see what you're getting at; you mean global modifications to the compiler to interpret the whole language differently. A macro allows you to make syntax, but it doesn't change the meaning of other syntax elsewhere in the program; only allows the programmer to add syntax to the language.