va_arg マクロは va_list ap の次の引数に対応する T 型の式に展開されます。 va_arg を呼ぶ前に、 ap は干渉する va_end の呼び出しなしに va_start または va_copy を呼ぶことによって初期化されなければなりません。 va_arg マクロは呼ばれるたびに次の可変長引数を指すよう ap を変更します。 ap の次の引数の (昇格後の) 型が T と互換でない場合、動作は未定義です。 ただし以下の場合は除きます。 一方の型が符号付き整数型、他方の型が対応する符号なし整数型で、その値がどちらの型でも表現可能である。 または 一方の型が void へのポインタで、他方が文字型 (char、 signed char または unsigned char) へのポインタである。 ap にそれ以上引数がないときに va_arg が呼ばれた場合、動作は未定義で
可変長引数をとる関数をつくるには,va_*マクロを使う. 大雑把な流れは以下のとおり. foo(type1 x, ...) { va_list args; va_start(args, x); while (ナントカ) { type2 arg = va_arg(args, type2); } va_end(args); 詳細 具体例がないとわかりにくいと思うので,次のような関数を例に説明する. プロトタイプ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く