The macros can have global scope, or be active only during a certain region of the program code. The system will automatically invoke any required additional macros which are introduced by the translated results. Allowing the programmer to use the entire Common Lisp language in defining programs to translate one program expression into another is very different than the simple character-based text substitution found in other languages. Another feature is that there are no statements in Common Lisp, only nested lists of program expressions. This makes it easy to define a single macro that can check the syntax of its own usage and be used in a variety of situations.
Lisp macros are a more flexible, uniform and easier to use approach.