最終更新日時:
が更新

履歴 編集

macro
<cstdarg>

va_end

#define va_end(ap) unspecified

概要

va_startまたはva_copyで初期化したva_listオブジェクトapの後始末を行う。

効果

apを無効化する。この呼び出し以降、apを再び使用するには改めてva_startまたはva_copyで初期化する必要がある。

戻り値

なし

備考

  • va_startまたはva_copyで初期化したva_listオブジェクトは、それを初期化した関数から戻る前に、対応する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

バージョン

言語

  • C++03

関連項目

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