#cpp
Подскажите, как реализовать функцию: int test(...){ printf(...);} То есть передать параметры va_list в следующую функцию.
Ответы
Ответ 1
Просто так передать неопределённый список аргументов невозможно, в языке нет синтаксиса для этого. Однако проблему можно обойти, как указано здесь: функция, которой вы передаёте управление, должна иметь вариант, принимающий 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_* интерфейс.
Комментариев нет:
Отправить комментарий