F.1.2 One Macro Call

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, assuming
car is not already defined, 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: