Macro
全域(非易失性)計數器的 m4 宏實現
是否可以定義一個 m4 宏(不帶參數),它在第一次呼叫時擴展為 1,在第二次呼叫時擴展為 2,等等?換句話說,它應該有內部儲存器來儲存它被呼叫的次數。這可以做到嗎?
您可以通過使用兩個宏來做到這一點,一個是
counter
保存目前值,一個count
是擴展為該值並重新定義“計數器”的宏。例如,它可能看起來像這樣define(`counter',`0')dnl define(`count',`define(`counter',eval(counter+1))counter')dnl
使用
count
宏時,它首先重新定義counter
以保存其下一個值(將其目前值加 1),然後使用該值。我不確定如何使用單個宏來執行此操作,如果這是您問題的一個重要方面,那麼這不是答案。