Next: Quoting Arguments, Previous: Inhibiting Invocation, Up: Macros
ある名前(name)が認識され、その名前に対するマクロの定義が存在するとき、 それはマクロとして展開されます。
その名前の直後に開きカッコ‘(’があるときは、 引数をすべて集めてから、マクロが呼び出されます。 足りない引数があるときは、空文字列が与えられたものとして解釈されます。 余分な引数は無視されます。
組み込みマクロの呼び出しで引数の数が不足しているとき、通常ならm4
は
警告を発しますが、コマンドラインオプション‘-Q’を使えば、
この警告を抑制できます。
ユーザ定義マクロに対する引数の個数チェックはありません。
引数の収集が行われているときでも、通常と同じようにマクロの展開は行われます。 そして展開後のテキストに出現した、コンマ、引用符、 カッコなどはすべて個々の引数の定義に寄与します。 したがってfooが‘, b, c’に展開されるとき、 次のマクロの呼び出し、
bar(a foo, d)
は、4つの引数、‘a ’, ‘b’, ‘c’, ‘d’ を伴うマクロの呼び出しとなります。 なぜ最初の引数に空白(whitespace)が含まれているのか理解するには、 引数の前にある空白はすべて削除されるのに対して、引数の後ろにある空白は 削除されないことを覚えておくとよいでしょう。