Category:M4: Difference between revisions
Content added Content deleted
(Expand introduction a little, note properly tail recursive) |
m (correction, changequote() for the quote chars, not changecom()) |
||
Line 16: | Line 16: | ||
Control flow is limited to <code>ifelse</code>, but it's easy to construct loops by recursion. GNU m4 includes examples of macros implementing various general-purpose loops. |
Control flow is limited to <code>ifelse</code>, but it's easy to construct loops by recursion. GNU m4 includes examples of macros implementing various general-purpose loops. |
||
Quoting data values against premature or unwanted expansion can be a little tricky. The default quote characters are <code>`</code> and <code>'</code>. If they would occur in text too often then <code> |
Quoting data values against premature or unwanted expansion can be a little tricky. The default quote characters are <code>`</code> and <code>'</code>. If they would occur in text too often then <code>changequote()</code> can set something else. Autoconf changes to <code>[</code> and <code>]</code> since <code>`</code> and <code>'</code> occur often in its [[Bourne Shell]] output. |
||
When a macro expands, its value (with <code>$1</code> etc parameters substituted) is re-read as input. This is how macro definitions can contain further macros to expand. |
When a macro expands, its value (with <code>$1</code> etc parameters substituted) is re-read as input. This is how macro definitions can contain further macros to expand. |