Next: Evaluation Macros, Up: Programming in M4sugar
With a few exceptions, all the M4 native macros are moved in the
`m4_' pseudo-namespace, e.g., M4sugar renames define as
m4_define etc.
Some M4 macros are redefined, and are slightly incompatible with their native equivalent.
Contrary to the M4 builtin, this macro fails if macro is not defined. See
m4_undefine.
Contrary to the M4 builtin, this macro fails if macro is not defined. Use
m4_ifdef([macro], [m4_undefine([macro])])to recover the behavior of the builtin.
This macro corresponds to
patsubst. The namem4_patsubstis kept for future versions of M4sh, on top of GNU M4 which will provide extended regular expression syntax viaepatsubst.
Contrary to the M4 builtin, this macro fails if macro is not defined. See
m4_undefine.
This macro corresponds to
regexp. The namem4_regexpis kept for future versions of M4sh, on top of GNU M4 which will provide extended regular expression syntax viaeregexp.
This macro corresponds to
m4wrap.You are encouraged to end text with `[]', so that there are no risks that two consecutive invocations of
m4_wrapresult in an unexpected pasting of tokens, as inm4_define([foo], [Foo]) m4_define([bar], [Bar]) m4_define([foobar], [FOOBAR]) m4_wrap([bar]) m4_wrap([foo]) =>FOOBAR