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