| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] | 
Let's proceed on the interaction between active characters and macros with this small macro, which just returns its first argument:
| define([car], [$1]) | 
The two pairs of quotes above are not part of the arguments of
define; rather, they are understood by the top level when it
tries to find the arguments of define.  Therefore, it is
equivalent to write:
| define(car, $1) | 
But, while it is acceptable for a `configure.ac' to avoid unnecessary quotes, it is bad practice for Autoconf macros which must both be more robust and also advocate perfect style.
At the top level, there are only two possibilities: either you quote or you don't:
| car(foo, bar, baz) =>foo [car(foo, bar, baz)] =>car(foo, bar, baz) | 
Let's pay attention to the special characters:
| car(#) error-->EOF in argument list | 
The closing parenthesis is hidden in the comment; with a hypothetical quoting, the top level understood it this way:
| car([#)] | 
Proper quotation, of course, fixes the problem:
| car([#]) =># | 
The reader will easily understand the following examples:
| car(foo, bar) =>foo car([foo, bar]) =>foo, bar car((foo, bar)) =>(foo, bar) car([(foo], [bar)]) =>(foo car([], []) => car([[]], [[]]) =>[] | 
With this in mind, we can explore the cases where macros invoke macros....