У меня есть следующая функция:
void doStuff(int unusedParameter, ...)
{
va_list params;
va_start(params, unusedParameter);
/* ... */
va_end(params);
}
Как часть рефакторинга, я хотел бы удалить неиспользуемый параметр, не изменяя реализацию функции. Насколько я могу судить, невозможно использовать va_start
, когда у вас нет последнего невариантного параметра для ссылки. Есть ли способ обойти это?
Справочная информация: На самом деле это программа на C ++, поэтому я мог бы использовать магию перегрузки операторов, как предлагалось здесь , но я надеялся, что на этом этапе не нужно менять интерфейс.
Существующая функция выполняет свою работу, требуя, чтобы список переменных-переменных заканчивался нулем, и сканировала на NULL, поэтому ей не нужен ведущий аргумент, чтобы сказать, сколько у нее аргументов.
В ответ на комментарии: у меня нет для удаления неиспользуемого параметра, но я бы сделал это, если бы был чистый способ сделать это. Я надеялся, что будет что-то простое, что я пропустил.