File: m4.info, Node: Ifdef, Next: Ifelse, Up: Conditionals 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