#define PP_MAP(m, ...) PP_MAP_DESCEND(m,__VA_ARGS__, \
    16, 15, 14, 13, 12, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)(m, __VA_ARGS__)

#define PP_MAP_DESCEND(_, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, z, ...) \
    PP_MAP_##z

#define PP_MAP_1(m, x) m(x)
#define PP_MAP_2(m, x, ...)  m(x) PP_MAP_1(m, __VA_ARGS__)
#define PP_MAP_3(m, x, ...)  m(x) PP_MAP_2(m, __VA_ARGS__)
#define PP_MAP_4(m, x, ...)  m(x) PP_MAP_3(m, __VA_ARGS__)
#define PP_MAP_5(m, x, ...)  m(x) PP_MAP_4(m, __VA_ARGS__)
#define PP_MAP_6(m, x, ...)  m(x) PP_MAP_5(m, __VA_ARGS__)
#define PP_MAP_7(m, x, ...)  m(x) PP_MAP_6(m, __VA_ARGS__)
#define PP_MAP_8(m, x, ...)  m(x) PP_MAP_7(m, __VA_ARGS__)
#define PP_MAP_9(m, x, ...)  m(x) PP_MAP_8(m, __VA_ARGS__)
#define PP_MAP_10(m, x, ...) m(x) PP_MAP_9(m, __VA_ARGS__)
#define PP_MAP_11(m, x, ...) m(x) PP_MAP_10(m, __VA_ARGS__)
#define PP_MAP_12(m, x, ...) m(x) PP_MAP_11(m, __VA_ARGS__)
#define PP_MAP_13(m, x, ...) m(x) PP_MAP_12(m, __VA_ARGS__)
#define PP_MAP_14(m, x, ...) m(x) PP_MAP_13(m, __VA_ARGS__)
#define PP_MAP_15(m, x, ...) m(x) PP_MAP_14(m, __VA_ARGS__)
#define PP_MAP_16(m, x, ...) m(x) PP_MAP_15(m, __VA_ARGS__)

#define ker(...) PP_MAP(ker_, __VA_ARGS__)

#define ker_(x) [x] // Тут пишешь, чего зделоть.

#include <stdio.h>

int main(void)
{
	int array[2][3][4] = {0};
	int asd = 3;
	return array ker(1, 2, asd); // Я хуй знаю, что еще с этим сделать.
}
