Next: , Previous: Undefine, Up: Definitions


4.5 マクロ名の変更

すでに定義済みのマクロの名前を替えることができます。 それには組み込みマクロdefnが必要となります。

     defn(name)

これはname定義をクォートしたものに展開されます。 引数が定義済みのマクロでないときは展開されると消滅します。

nameがユーザ定義マクロの場合、 クォートされた定義とは単にクォートされた展開用テキストのことです。 nameが組み込みマクロの場合、 展開後のテキストは、m4の内部にある組み込みマクロの定義を指す 特殊なトークンとなります。 このトークンは、define (および pushdef) の第2引数としてのみ意味を持ち、その他の文脈では無視されます。

通常の使用方法は、次の例でundefineの名前をzapに換える方法を 見るのが一番分かりやすいでしょう。

     define(`zap', defn(`undefine'))
     
     zap(`undefine')
     
     undefine(`zap')
     undefine(zap)

このようにdefnはユーザ定義マクロの定義や 組み込みマクロの定義をコピーするために使うことができます。 たとえ元のマクロが削除されても、もう一方の名前を使って 定義にアクセスすることができます。

defnは引数を与えたときだけ認識されます。