va_start
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <cstdarg>
|
||
void va_start( std::va_list ap, parm_n ); |
||
Макрос va_start позволяет получить доступ к переменному числу аргументов, которые следуют после именованного аргумента parm_n.
va_start должен быть вызван с корректным экземпляром объекта va_list ap до любого вызова va_arg.
|
Если |
(начиная с C++11) |
Если parm_n определён с типом ссылки или с типом, несовместимым с типом, полученным в результате продвижения аргумента по умолчанию, поведение не определено.
Параметры
| ap | — | экземпляр типа va_list |
| parm_n | — | именованный параметр, предшествующий первому переменному параметру |
Расширенное значение
(нет)
Примечание
va_start требуется для поддержки parm_n с перегруженным operator&.
Пример
Запустить этот код
#include <iostream>
#include <cstdarg>
int add_nums(int count, ...)
{
int result = 0;
std::va_list args;
va_start(args, count);
for (int i = 0; i < count; ++i) {
result += va_arg(args, int);
}
va_end(args);
return result;
}
int main()
{
std::cout << add_nums(4, 25, 25, 50, 50) << '\n';
}
Вывод:
150
Смотрите также
| обращается к следующему аргументу функции с переменным числом аргументов (функция-макрос) | |
| завершает обход аргументов функции с переменным числом аргументов (функция-макрос) | |
Документация C по va_start
| |