M4(1) | General Commands Manual | M4(1) |
m4 | [-gPs] [-Dname[=value]] [-d flags] [-I dirname] [-o filename] [-t macro] [-Uname] [file ...] |
Macro calls have the form name(argument1[, argument2, ..., argumentN]).
There cannot be any space following the macro name and the open parenthesis ‘('. If the macro name is not followed by an open parenthesis it is processed with no arguments.
Macro names consist of a leading alphabetic or underscore possibly followed by alphanumeric or underscore characters, e.g., valid macro names match the pattern “[a-zA-Z_][a-zA-Z0-9_]*”.
In arguments to macros, leading unquoted space, tab, and newline (‘\n') characters are ignored. To quote strings, use left and right single quotes (e.g., ‘ this is a string with a leading space'). You can change the quote characters with the changequote built-in macro.
Most built-ins don't make any sense without arguments, and hence are not recognized as special when not followed by an open parenthesis.
The options are as follows:
By default, trace is set to “eq”.
# This is a comment
With no arguments, comments are turned off. With one single argument, the end comment sequence is set to the newline character.
`Here is a quoted string'
With no arguments, the default quotes are restored. With one single argument, the close quote sequence is set to the newline character.
Multiple calls to m4wrap() get inserted in sequence at the final EOF.
The flags [-dgIot] and the macros builtin, esyscmd, expr, format, indir, paste, patsubst, regexp, spaste, unix, __line__, and __file__ are extensions to that specification.
The output format of tracing and of dumpdef are not specified in any standard, are likely to change and should not be relied upon. The current format of tracing is closely modelled on gnu-m4, to allow autoconf to work.
The built-ins pushdef and popdef handle macro definitions as a stack. However, define interacts with the stack in an undefined way. In this implementation, define replaces the top-most definition only. Other implementations may erase all definitions on the stack instead.
All built-ins do expand without arguments in many other m4.
Many other m4 have dire size limitations with respect to buffer sizes.
GNU-m4 compatibility extensions by
<espie@cvs.openbsd.org>.October 14, 2009 | NetBSD 6.1 |