C-standard-library-c-macro-va-arg

提供:Dev Guides
移動先:案内検索

Cライブラリマクロ-va_arg()

説明

Cライブラリマクロ* type va_arg(va_list ap、type)は、 *type を使用して、関数のパラメーターリスト内の次の引数を取得します。 これは、取得した引数が関数に渡される最後の引数であるかどうかを決定しません。

宣言

以下は、va_arg()マクロの宣言です。

type va_arg(va_list ap, type)

パラメーター

  • ap -これは、追加の引数とその取得状態に関する情報を持つタイプva_listのオブジェクトです。 このオブジェクトは、va_argの最初の呼び出しの前に、va_startを最初に呼び出して初期化する必要があります。
  • type -これはタイプ名です。 この型名は式の型として使用され、このマクロは展開されます。

戻り値

このマクロは、次の追加の引数を type 型の式として返します。

次の例は、va_arg()マクロの使用法を示しています。

#include <stdarg.h>
#include <stdio.h>

int sum(int, ...);

int main () {
   printf("Sum of 15 and 56 = %d\n",  sum(2, 15, 56) );
   return 0;
}

int sum(int num_args, ...) {
   int val = 0;
   va_list ap;
   int i;

   va_start(ap, num_args);
   for(i = 0; i < num_args; i++) {
      val += va_arg(ap, int);
   }
   va_end(ap);

   return val;
}

上記のプログラムをコンパイルして実行し、次の結果を生成しましょう-

Sum of 15 and 56 = 71