最終更新日時:
が更新

履歴 編集

macro
<cstdarg>

va_arg

#define va_arg(ap, type) unspecified

概要

va_listオブジェクトapから、type型の次の可変引数を取得する。

va_argを呼び出すたびに、apは次の引数を指すように進む。

戻り値

type型に変換した、次の可変引数の値。

備考

  • 取得する引数が存在しない場合、または実際に渡された引数の型とtypeが互換でない場合、動作は未定義である(ただし、符号の有無だけが異なる整数型どうしなど、一部の組み合わせは許容される)。
  • apは、あらかじめva_startまたはva_copyで初期化されていなければならない。

#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

バージョン

言語

  • C++03

関連項目

  • va_start: 可変引数へのアクセスを開始する
  • va_end: 可変引数へのアクセスを終了する