可变参数

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;
}

 参考 【C/C++】可变参数_c++ 可变参数-CSDN博客

posted @ 2024-07-23 12:34  夕西行  阅读(6)  评论(0编辑  收藏  举报