Copyright (C) 2000-2012 |
GNU Info (autoconf.info)Active CharactersActive Characters ----------------- To fully understand where proper quotation is important, you first need to know what are the special characters 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", although 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[10]; =>int tab10; [int tab[10];] =>int tab[10]; Without this in mind, the reader will try hopelessly to use her macro `array': define([array], [int tab[10];]) array =>int tab10; [array] =>array How can you correctly output the intended results(1)? ---------- Footnotes ---------- (1) Using `defn'. automatically generated by info2www version 1.2.2.9 |