У меня есть сторонняя функция с подписью:
int secretfoo(int numargs, ...);
Я могу вызвать его напрямую, но я действительно хочу обернуть его своей функцией, которая добавляет к нему несколько дополнительных аргументов.
Предположим простой случай целых чисел: я хочу, чтобы вызовы secretfoo(2, 10, 20)
были переведены так: когда я вижу аргумент 10, чтобы продублировать его и сделать вызов: secretfoo(3, 10, 10, 20)
. Я хочу сделать это в обертке:
int foowrapper(int numargs, ...);
Эта оболочка анализирует аргументы и вызывает secretfoo
, как описано выше.
Можно ли это сделать в переносном виде с va_list
/ va_arg
и т. Д.? Любой другой путь?