m4
で拡張された機能
本バージョンのm4
にはSystem V m4
に存在しない機能が
いくつかあります。
これらの追加された機能はコマンドラインオプション‘-G’を使うことで、
他のコマンドラインオプションによってくつがえされない限り、すべて抑制されます。
$
n表記において、
nは複数の数字を含むことができますが、
System V m4
は1つの数字しか受けつけません。
これによりGNU m4
ではマクロが引数を9つだけでなく
いくつでも取ることができます。(see Arguments)
include
とsinclude
でインクルードされるファイルは、
作業ディレクトリで見つからないときは指定されたサーチパスのなかから
捜し出されます。サーチパスは‘-I’オプションと環境引数‘M4PATH’で
指定します。(see Search Path)
undivert
への引数は数字以外でもよく、
そのときはその名前を持つファイルを解釈しないまま出力に含めます。
(see Undivert)
printf
をモデルとした
組み込みマクロformat
を通じてサポートされています。(see Format)
regexp
(see Regexp)と
patsubst
(see Patsubst)によってサポートされています。
esyscmd
(see Esyscmd)で
m4
に読み込むことができます。
builtin
(see Builtin)により任意の組み込みマクロへ
間接的にアクセスできます。
indir
(see Indir)を通じてマクロを間接的に呼び出せます。
__file__
と__line__
(see Errprint)
を通じて現在の入力ファイルの名前と現在の入力行番号へアクセスできます。
dumpdef
とマクロトレースの出力書式を
debugmode
(see Debug Levels)で制御することができます。
debugfile
(see Debug Output)
で制御可能です。
上記の拡張に加えGNU m4
には次のコマンドラインオプションが
実装されています ― ‘-F’, ‘-G’, ‘-I’,
‘-L’, ‘-R’, ‘-V’, ‘-W’, ‘-d’,
‘-l’, ‘-o’, ‘-t’。
これらオプションの説明はSee Invoking m4を参照してください。
またGNU m4
のデバッグとトレース機構は
他バージョンのm4
にあるものより遥かに大規模です。