次: One Macro Call, 上: 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?