Как подсчитать количество аргументов, переданных функции, которая принимает переменное количество аргументов?

Как подсчитать количество аргументов, переданных функции в следующей программе:

#include<stdio.h>
#include<stdarg.h>
void varfun(int i, ...);
int main(){
        varfun(1, 2, 3, 4, 5, 6);
        return 0;
}
void varfun(int n_args, ...){
        va_list ap;
        int i, t;
        va_start(ap, n_args);
        for(i=0;t = va_arg(ap, int);i++){
               printf("%d", t);
        }
        va_end(ap);
}

Вывод этой программы через мой компилятор gcc в ubuntu 10.04:

234561345138032514932134513792

, так как узнать, сколько нет. аргументов, фактически переданных функции?

39
задан Abizern 12 December 2010 в 12:43
поделиться