m4 implementação macro do contador global (não volátil)

1

É possível definir uma macro m4 (sem argumentos), que se expande para 1 na primeira chamada, expande para 2 na segunda chamada e assim por diante? Em outras palavras, deve ter memória interna armazenando o número de vezes que é invocado. Isso pode ser feito?

    
por adgadg 02.05.2016 / 10:49

1 resposta

5

Você pode fazer isso com duas macros, uma counter mantendo o valor atual e uma macro count que se expande para o valor e redefine o 'contador'. Por exemplo, poderia parecer com isso

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

Quando a macro count é usada, ela primeiro redefine counter para manter seu próximo valor (adicionando 1 ao seu valor presente) e, em seguida, usa esse valor.

Não sei imediatamente como fazer isso com uma única macro e, se esse for um aspecto importante do seu problema, essa não é a resposta.

    
por 02.05.2016 / 12:45

Tags