(m4.info.gz) Dnl
Info Catalog
(m4.info.gz) Input Control
(m4.info.gz) Changequote
7.1 Deleting whitespace in input
================================
The builtin `dnl' stands for "Discard to Next Line":
-- Builtin: dnl
All characters, up to and including the next newline, are discarded
without performing any macro expansion.
The expansion of `dnl' is void.
It is often used in connection with `define', to remove the newline
that follows the call to `define'. Thus
define(`foo', `Macro `foo'.')dnl A very simple macro, indeed.
foo
=>Macro foo.
The input up to and including the next newline is discarded, as
opposed to the way comments are treated ( Comments).
Usually, `dnl' is immediately followed by an end of line or some
other whitespace. GNU `m4' will produce a warning diagnostic if `dnl'
is followed by an open parenthesis. In this case, `dnl' will collect
and process all arguments, looking for a matching close parenthesis.
All predictable side effects resulting from this collection will take
place. `dnl' will return no output. The input following the matching
close parenthesis up to and including the next newline, on whatever
line containing it, will still be discarded.
dnl(`args are ignored, but side effects occur',
define(`foo', `like this')) while this text is ignored: undefine(`foo')
error-->m4:stdin:2: Warning: excess arguments to builtin `dnl' ignored
See how `foo' was defined, foo?
=>See how foo was defined, like this?
If the end of file is encountered without a newline character, a
warning is issued and dnl stops consuming input.
define(`hi', `HI')
=>
m4wrap(`m4wrap(`2 hi
')0 hi dnl 1 hi')
=>
^D
error-->m4: Warning: end of file treated as newline
=>0 HI 2 HI
Info Catalog
(m4.info.gz) Input Control
(m4.info.gz) Changequote
automatically generated byinfo2html