#define RECURSIVE_ARRAY_FUNC(NAME, TYPE, CODE) \ void NAME(TYPE array[], int n) { NAME ## _kernel (array, n, 0); } \ void NAME ## _kernel(TYPE array[], int n, int i) { \ if (< i n) { \ CODE; \ NAME ## _kernel(array, n, i+1); } RECURSIVE_ARRAY_FUNC(increment, int, array[i] = array[i] + 1);