Я изучаю использование переменных аргументов в C, используя GNU (внутри Code :: Blocks). Когда я выполнить следующий код:Передача переменных чисел аргументов функции C
#include <stdio.h>
#include <stdarg.h>
void VarargsTest(int n_args, ...)
{
int i, arg;
va_list ap;
fprintf(stderr, "N_args is %d\n", n_args);
va_start(ap, n_args);
for(i= 0; i < n_args; i++)
{
arg= va_arg(ap, int);
fprintf(stderr, "arg %d is %d\n", i, arg);
}
va_end(ap);
}
int main()
{
VarargsTest(1,2,3,4,5,6,5,4,3,2,1);
return 0;
}
я получаю следующий результат:
N_args is 1
arg 0 is 2
т.е. число аргументов (11) не правильно сообщили функции VarargsTest
, и даже один и только аргумент, который он видит, неверен. Есть идеи?
'VarargsTest (11, 1,2,3,4,5, 6,5,4,3,2,1); ' – BLUEPIXY