m4: Ifdef

 
 6.1 Testing if a macro is defined
 =================================
 
 There are two different builtin conditionals in 'm4'.  The first is
 'ifdef':
 
  -- Builtin: ifdef (NAME, STRING-1, [STRING-2])
      If NAME is defined as a macro, 'ifdef' expands to STRING-1,
      otherwise to STRING-2.  If STRING-2 is omitted, it is taken to be
      the empty string (according to the normal rules).
 
      The macro 'ifdef' is recognized only with parameters.
 
      ifdef(`foo', ``foo' is defined', ``foo' is not defined')
      =>foo is not defined
      define(`foo', `')
      =>
      ifdef(`foo', ``foo' is defined', ``foo' is not defined')
      =>foo is defined
      ifdef(`no_such_macro', `yes', `no', `extra argument')
      error->m4:stdin:4: Warning: excess arguments to builtin `ifdef' ignored
      =>no