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.