#include "stdafx.h"
#include <stdarg.h> // 必须包含的头文件
#define ADD(int_params,...) Add(int_params,__VA_ARGS__,0)//_VA_ARGS__,这个宏可以取到变参
int Add(const int start,...);
int _tmain(int argc, _TCHAR* argv[])
{
int i = ADD(1,2,3,4,5,6,7,8,9);
int q = Add(1,2,3,4,5,6,7,8,9,0);
return 0;
}
int Add(const int start,...) // ...是作为占位符
{
va_list arg_ptr; // 定义变参起始指针
int sum = 0;
int nArgValue = start;
va_start(arg_ptr,start); // arg_ptr指向第一个变参,即start后面那个参数
while(arg_ptr != NULL)
{
sum+=nArgValue; // 求和
nArgValue = va_arg(arg_ptr,int); // arg_ptr指向下一个变参
if(nArgValue == 0) // 判断结束条件;结束条件是自定义为=0时结束
break;
}
va_end(arg_ptr); // 复位指针
return sum;
}