Previous: Patsubst, Up: Text handling
Formatted output can be made with format:
Works much like the C function
printf. The first argument format-string can contain `%' specifications which are satisfied by additional arguments, and the expansion offormatis the formatted string.The macro
formatis recognized only with parameters.
Its use is best described by a few examples:
define(`foo', `The brown fox jumped over the lazy dog')
=>
format(`The string "%s" uses %d characters', foo, len(foo))
=>The string "The brown fox jumped over the lazy dog" uses 38 characters
format(`%.0f', `56789.9876')
=>56790
len(format(`%-*X', `300', `1'))
=>300
Using the forloop macro defined in See Loops, this
example shows how format can be used to produce tabular output.
include(`forloop.m4')
=>
forloop(`i', `1', `10', `format(`%6d squared is %10d
', i, eval(i**2))')
=> 1 squared is 1
=> 2 squared is 4
=> 3 squared is 9
=> 4 squared is 16
=> 5 squared is 25
=> 6 squared is 36
=> 7 squared is 49
=> 8 squared is 64
=> 9 squared is 81
=> 10 squared is 100
=>
The builtin format is modeled after the ANSI C `printf'
function, and supports these `%' specifiers: `c',
`s', `d', `o', `x', `X', `u', `e',
`E', `f', `F', `g', `G', and `%'; it
supports field widths and precisions, and the
modifiers `+', `-', ` ', `0', `#', `h' and
`l'. For more details on the functioning of printf, see the
C Library Manual.
For now, unrecognized specifiers are silently ignored, but it is
anticipated that a future release of GNU m4 will support more
specifiers, and give warnings when problems are encountered. Likewise,
escape sequences are not yet recognized.