Next: One Macro Call, Up: M4 Quotation
適切な引用符の重要性を完全に理解するため,最初にAutoconfでの特殊な文字が 何かを知る必要があります.‘#’はマクロ展開が実行されない内部コメント の導入で,‘,’は引数のセパレータ,‘[’と‘]’はそれらの引用符, そして最後は,(M4が対の一致を試みる)‘(’と‘)’です.
マクロ呼び出しの微妙な状況を理解するために,最初に明らかな失敗を紹介しな ければならないでしょう.以下で“明確にされ”ていて,実生活でも見つかるで しょうが,それらは通常ごまかしです.
ハッシュと改行まで実行することで導入されるコメントは,トップレベルへの不 明瞭なトークンです.アクティブな文字はそうではなくなり,マクロの展開もあ りません.
# define([def], ine) # define([def], ine)
マクロの展開があるごとに,引用符も展開されます.すなわち,第一レベルの引 用符は削除されます.
int tab[10]; int tab10; [int tab[10];] int tab[10];
これを覚えていなければ,読者は絶望しながらもマクロのarray
を使用し
てみるでしょう.
define([array], [int tab[10];]) array int tab10; [array] array
期待する結果を正しく出力するにはどうすれば良いでしょうか 1?