最終更新日時:
が更新

履歴 編集

type-alias
<cstdarg>

std::va_list

namespace std {
  using va_list = unspecified;
}

概要

va_listは、関数が受け取った可変個数の引数にアクセスするために必要な情報を保持する型である。

va_startマクロによって初期化し、va_argマクロで各引数を順に取り出し、va_endマクロで後始末を行う。

#include <cstdarg>
#include <iostream>

// count個のint引数の合計を求める
int sum(int count, ...)
{
  std::va_list args;
  va_start(args, count);

  int total = 0;
  for (int i = 0; i < count; ++i) {
    total += va_arg(args, int);
  }

  va_end(args);
  return total;
}

int main()
{
  std::cout << sum(3, 10, 20, 30) << std::endl;
}

出力

60

関連項目

  • va_start: 可変引数へのアクセスを開始する
  • va_arg: 次の可変引数を取得する
  • va_end: 可変引数へのアクセスを終了する
  • va_copy: va_listオブジェクトを複製する