Comment Comment by jstimpfle 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 parent jstimpfle 4 years ago