是否可以定义一个 m4 宏(不带参数),在第一次调用时扩展为 1,在第二次调用时扩展为 2,依此类推?换句话说,它应该有内部存储器来存储它被调用的次数。这可以做到吗?
小智 5
您可以通过使用两个宏来做到这一点,一个counter保存当前值,一个count扩展为该值并重新定义“计数器”的宏。例如,它可能看起来像这样
define(`counter',`0')dnl
define(`count',`define(`counter',eval(counter+1))counter')dnl
Run Code Online (Sandbox Code Playgroud)
count当使用该宏时,它首先重新定义counter以保存其下一个值(将其当前值加 1),然后使用该值。
我不确定如何使用单个宏来做到这一点,如果这是您问题的一个重要方面,那么这不是答案。