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.