DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(m4.info.gz) Builtin

Info Catalog (m4.info.gz) Indir (m4.info.gz) Definitions
 
 4.8 Indirect call of builtins
 =============================
 
 Builtin macros can be called indirectly with `builtin':
 
  -- Builtin: builtin (NAME, ...)
      Results in a call to the builtin NAME, which is passed the rest of
      the arguments.  If NAME does not name a builtin, an error message
      is printed, and the expansion is void.
 
      The macro `builtin' is recognized only with parameters.
 
    This can be used even if NAME has been given another definition that
 has covered the original, or been undefined so that no macro maps to
 the builtin.
 
      pushdef(`define', `hidden')
      =>
      undefine(`undefine')
      =>
      define(`foo', `bar')
      =>hidden
      foo
      =>foo
      builtin(`define', `foo', `BAR')
      =>
      foo
      =>BAR
      undefine(`foo')
      =>undefine(foo)
      foo
      =>BAR
      builtin(`undefine', `foo')
      =>
      foo
      =>foo
 
    The NAME argument only matches the original name of the builtin,
 even when the `--prefix-builtins' option (or `-P',  Invoking m4)
 is in effect.  This is different from `indir', which only tracks
 current macro names.
 
    Note that `indir' and `builtin' can be used to invoke builtins
 without arguments, even when they normally require parameters to be
 recognized; but it will provoke a warning, and result in a void
 expansion.
 
      builtin
      =>builtin
      builtin()
      error-->m4:stdin:2: undefined builtin `'
      =>
      builtin(`builtin')
      error-->m4:stdin:3: Warning: too few arguments to builtin `builtin'
      =>
      builtin(`builtin',)
      error-->m4:stdin:4: undefined builtin `'
      =>
 
Info Catalog (m4.info.gz) Indir (m4.info.gz) Definitions
automatically generated byinfo2html