( Dnl

Info Catalog ( Input Control ( 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.
      =>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')
      error-->m4: Warning: end of file treated as newline
      =>0 HI 2 HI
Info Catalog ( Input Control ( Changequote
automatically generated byinfo2html