У меня есть служебный макрос для трансляции данного макроса всем аргументам:
#define NUM_ARGS_IMPL( \
_1, _2, _3, _4, _5, _6, _7, _8, _9, \
//... many placeholders
_90,_91,_92,_93,_94,_95,_96,_97,_98,_99, \
N, ...) N
#define NUM_ARGS_EXPAND(tuple)...