Buy the book!
|[ < ]||[ > ]||[ << ]||[ Up ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]|
To fully understand where proper quotation is important, you first need to know what the special characters are in Autoconf: `#' introduces a comment inside which no macro expansion is performed, `,' separates arguments, `[' and `]' are the quotes themselves, and finally `(' and `)' (which M4 tries to match by pairs).
In order to understand the delicate case of macro calls, we first have to present some obvious failures. Below they are "obvious-ified", but when you find them in real life, they are usually in disguise.
Comments, introduced by a hash and running up to the newline, are opaque tokens to the top level: active characters are turned off, and there is no macro expansion:
# define([def], ine) =># define([def], ine)
Each time there can be a macro expansion, there is a quotation expansion, i.e., one level of quotes is stripped:
int tab; =>int tab10; [int tab;] =>int tab;
Without this in mind, the reader will try hopelessly to use her macro
define([array], [int tab;]) array =>int tab10; [array] =>array
How can you correctly output the intended results(2)?
|webmaster donations bookstore||delorie software privacy|
|Copyright © 2003 by The Free Software Foundation||Updated Jun 2003|