### 4.5 Macro expansion ¶

When the arguments, if any, to a macro call have been collected, the macro is expanded, and the expansion text is pushed back onto the input (unquoted), and reread. The expansion text from one macro call might therefore result in more macros being called, if the calls are included, completely or partially, in the first macro calls’ expansion.

Taking a very simple example, if foo expands to ‘`bar`’, and bar expands to ‘`Hello`’, the input

    $ m4 -Dbar=Hello -Dfoo=bar
    foo
    ⇒Hello

will expand first to ‘`bar`’, and when this is reread and expanded, into ‘`Hello`’.