最初の呼び出しで1に展開され、2番目の呼び出しで2に展開される、などのm4マクロ(引数なし)を定義することは可能ですか?つまり、呼び出された回数を格納する内部メモリが必要です。これはできますか?
これを行うには、現在の値を保持するcounter
マクロと、値に展開して `counter 'を再定義するcount
マクロの2つのマクロを使用します。たとえば、次のようになります
define(`counter',`0')dnl
define(`count',`define(`counter',eval(counter+1))counter')dnl
count
マクロを使用する場合、最初にcounter
を再定義して次の値を保持し(現在の値に1を加算)、次にその値を使用します。
単一のマクロでこれを行う方法がすぐにはわかりません。それが問題の重要な側面である場合、これは答えではありません。