Не может быть сделано, пока все, что у вас есть, это куча, если функции с ...
аргументами.
Вы должны заранее планировать подобные вещи и реализовывать каждую вариационную функцию в два этапа
void vfoo(format, va_list *args) {
/* Process `*args` */
}
void foo(format, ...) {
va_list args;
va_start(args, format);
vfoo(format, &args);
va_end(args);
}
После того как каждая из ваших переменных функций реализована с помощью пары функций va_list *
и ...
, вы можете делегировать вызовы, используя va_list *
версии функций
.
void vfoo(format, va_list *args) {
...
vbar(format, args);
...
}