type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );
void va_start( va_list arg_ptr ); // (UNIX version)
void va_start( va_list arg_ptr, prev_param ); // (ANSI version)
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
void MyPrint(char* format, ...)
{
char buf[255];
memset(buf, 0, sizeof(buf));
va_list param_list;
va_start(param_list, format);
vsprintf(buf, format, param_list);
va_end(param_list);
printf("%s\n", buf);
}
int GetSum(int number, ...)
{
int sum = 0;
va_list ap;
va_start(ap, number);
while (number--)
{
int tmp = va_arg(ap, int);
sum += tmp;
}
va_end(ap);
return sum;
}
void main()
{
MyPrint("%d, %f, %s", 1, 2.0, "3");
int sum_int = GetSum(4, 2, 3, 4, 5);
printf("sum_int %d\n", sum_int);
}