c++可变参数(示例)
#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; }