I think you want to move the last element to the front, right?
e.g., foo(a, b, c, d)
should expand to d, a, b, c
To do it, add this to the stack overflow answer
1 2 3 4 5 6 7
#define DROP_LAST_pattern_1(a)
#define DROP_LAST_pattern_2(a, b) a
#define DROP_LAST_pattern_3(a, b, c) a, b
#define DROP_LAST_pattern_4(a, b, c, d) a, b, c
// extend as needed
#define DROP_LAST0(n, ...) M_CONC(DROP_LAST_pattern_, n)(__VA_ARGS__)
#define DROP_LAST(...) DROP_LAST0(M_NARGS(__VA_ARGS__), __VA_ARGS__)