グローバル(不揮発性)カウンタのm4マクロ実装

グローバル(不揮発性)カウンタのm4マクロ実装

最初の呼び出しでは1に、2番目の呼び出しでは2に拡張するm4マクロ(パラメータなし)を定義できますか?つまり、呼び出された回数を格納できる内部メモリが必要です。これは可能ですか?

ベストアンサー1

counter2つのマクロ、つまり現在の値を格納するマクロとcountその値に展開し、「カウンタ」をオーバーライドするマクロを使用してこれを実行できます。たとえば、次のようになります。

define(`counter',`0')dnl
define(`count',`define(`counter',eval(counter+1))counter')dnl

countこのマクロを使用すると、最初に次のcounter値を保存するようにオーバーライドされ、次に(現在の値を1ずつ増やして)その値が使用されます。

単一のマクロを使用してこれを行う方法がわかりません。したがって、これがあなたの質問の重要な側面である場合、これは答えではありません。

おすすめ記事