C++ Передача списка va_list в функцию

Рейтинг: 5Ответов: 2Опубликовано: 26.04.2015

Подскажите, как реализовать функцию:

int test(...){ printf(...);}

То есть передать параметры va_list в следующую функцию.

Ответы

▲ 8Принят

Просто так передать неопределённый список аргументов невозможно, в языке нет синтаксиса для этого. Однако проблему можно обойти, как указано здесь: функция, которой вы передаёте управление, должна иметь вариант, принимающий va_list.

Для вашего случая, вы можете использовать vprintf:

void test(char *format, ...) // должен быть хотя бы один аргумент
{
    va_list args;
    va_start(args, format);
    vprintf(format, args);
    va_end(args);
}
▲ 2

Или макросом:

 #define prn(A,...) printf(A,__VA_ARGS__)

иногда так проще, особенно если надо добавить к VA_ARGS дополнительные аргументы.Но по уму все же по изучать VA_* интерфейс.