I am working on a call macro,
#define CALL(f,...) FN(f)->call((ref(new LinkedList()), __VA_ARGS__))
which when called,
C
If you're using gcc/g++ there is a way:
#define CALL(f,...) FN(f)->call((ref(new LinkedList()), ## __VA_ARGS__))
From the fine manual:
[...] if the variable arguments are omitted or empty, the `##' operator causes the preprocessor to remove the comma before it.
So gcc has an extension/hack specifically for the problem you are facing.