Предположим, что у меня есть функция, которая принимает переменные аргументы (...
) или va_list
, переданные из другой такой функции. Основная логика заключается в самой этой функции (пусть ее называют f1
), но я хочу, чтобы она передавала va_list
в другую функцию (пусть она называет ее f2
), которая будет определять следующий тип аргумента, получить ее, используя va_arg
и правильно конвертировать и сохранять его для использования вызывающим абонентом.
Достаточно ли передать va_list в f2
, или необходимо передать указатель на va_list. Если va_list не требуется, чтобы быть типом массива или хранить данные о местоположении в месте, на которое указывает объект va_list
(а не сам объект), я не вижу, как передача его по значению может разрешить вызывающую функцию (f1
), чтобы "видеть" изменения вызываемой функции, сделанные с помощью va_arg
.
Может ли кто-нибудь пролить свет на это? Меня интересует то, что требует стандарт, а не то, что позволяет определенная реализация.