Переменное число параметров

Тема в разделе "Общие вопросы по С и С++", создана пользователем Rumzy, 19 мар 2008.

Статус темы:
Закрыта.
  1. Rumzy

    Rumzy Гость

    Привет!

    Столкунулся со следующей проблеммой. Для функции с переменным числом параметров нужно написать wrapper.
    Код (Text):
    int func(int i, char* format, ...);

    int wrapper_func(int i, char* format, ...)
    {
    // do something

    return func(i, format, ...); // ??
    }
    Как передать переменное число параметров в "оборачиваемую" функцию?

    ЗЫ i - просто переменная типа int. Это не количество параметров.
     
  2. Normann

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Никак. Либо передаешь адрес либо число и копируешь.
     
  3. Rumzy

    Rumzy Гость

    Задача состоит как-раз в том, чтоб не менять интерфейс базовой функции. Но похоже общий случай таки невозможно решить с помощью средств С/С++.
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Для обработки переменного числа параметров используются макросы:
    Но как решить твою задачу сходу я и не соображу
     
  5. Normann

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Нет, всетаки можно - через глобальную переменную

    Даже еще вот способ - у тебя же переменное число аргументов, вот и передавай в них адрес, а функция будет интерпретировать один из аргументов как адрес в зависимости от различных критериев которые можно придумать целую кучу.
     
  6. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Normann, насколько я понял условие, функция func должна остаться неизменна, тогда ни глобальные переменные, ни передача адреса положение не изменят..


    Rumzy, надеюсь func это не printf?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей