Thanks, it's a little clearer in my mind now. But wouldn't this work for you?
#include <stdio.h>
#define FOO_(c) printf("%d %d %d\n", c, c, c);
#define FOO() FOO_(__COUNTER__)
#define FOO2() FOO_(__COUNTER__)
int main(void)
{
printf("%d %d %d\n", __COUNTER__, __COUNTER__, __COUNTER__);
FOO();
FOO();
FOO2();
FOO2();
return 0;
}
Output: 0 1 2
3 3 3
4 4 4
5 5 5
6 6 6