Вы можете использовать макросы va_start()
и va_end()
, но у вас должен быть хотя бы один аргумент:
void testfunc(int n, ...)
{
va_list vl;
va_start(vl, n); // initialize the va_list
// something useful
va_end(vl); // deinitializes vl
}
Вы можете последовательно получить доступ к аргументам с помощью va_arg(vl, type)
(например, int x = va_arg(vl, int)
). Кроме того, va_copy
иногда полезен, если вы хотите скопировать текущее состояние va_list