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