Next: Text processing Macros, Previous: Looping constructs, Up: Programming in M4sugar
The following macros give some control over the order of the evaluation by adding or removing levels of quotes. They are meant for hard-core M4 programmers.
Return the arguments as a single entity, i.e., wrap them into a pair of quotes.
The following example aims at emphasizing the difference between (i), not
using these macros, (ii), using m4_quote
, and (iii), using
m4_dquote
.
$ cat example.m4 # Overquote, so that quotes are visible. m4_define([show], [$[]1 = [$1], $[]@ = [$@]]) m4_define([mkargs], [1, 2, 3]) m4_define([arg1], [[$1]]) m4_divert(0)dnl show(a, b) show(m4_quote(a, b)) show(m4_dquote(a, b)) arg1(mkargs) arg1([mkargs]) arg1(m4_defn([mkargs])) arg1(m4_quote(mkargs)) arg1(m4_dquote(mkargs)) $ autom4te -l m4sugar example.m4 $1 = a, $@ = [a],[b] $1 = a,b, $@ = [a,b] $1 = [a],[b], $@ = [[a],[b]] 1 mkargs 1, 2, 3 1,2,3 [1],[2],[3]