Next: , Previous: Conditionals, Up: Conditionals


5.1 マクロが定義済みかを判定する

m4には2つの異なる条件構文が組み込まれています。 その1つはifdefです。

     ifdef(name, string-1, opt string-2)

これにより、あるマクロが定義されているかどうかをテストできるようになります。 nameがマクロとして定義されていれば ifdefstring-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は引数を与えたときだけ認識されます。