可变参数
C++的可变参数模板不在本文讨论范围,只用了C的可变参数 ...
做了如下约定:
- 第一个函参是参数个数
- 所有可变参数都是size_t类型
#include<stdarg.h> //for va_start等 #include<vector> void add(size_t count,...) //第1个参数只是一个标识(个数),之后是真正的参数(约定所有参数类型为size_t) { va_list args; va_start(args, count); std::vector<size_t> v; //参数都存在这里 for (int i = 0; i < count; i++) { v.emplace_back(va_arg(args, size_t)); } va_end(args); switch (count) { case 2: std::cout << v[0] + v[1] << std::endl; break; case 3: std::cout << v[0] + v[1] + v[2] << std::endl; break; default: break; } } int main() { add(2, 10, 11); //21 add(3, 2, 3, 5); //10 return 0; }