次: Ifelse, 前: Conditionals, 上: Conditionals
m4には2つの異なる条件構文が組み込まれています。
その1つはifdefです。
ifdef(name, string-1, opt string-2)
これにより、あるマクロが定義されているかどうかをテストできるようになります。
nameがマクロとして定義されていれば
ifdefはstring-1に展開され、
そうでないときはstring-2に展開されます。
string-2が省略されたときは
(通常の規則に従い)空文字列として解釈されます。
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は引数を与えたときだけ認識されます。