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
は引数を与えたときだけ認識されます。