DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(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