プログラミング言語 C の新機能 Part XXXIV: stdarg.h: va_copy
(1999/12/13 [月])
stdarg.h ヘッダに新たなマクロが追加されました。それは va_copy です。
可変長引数を使用する時には、va_start で可変長引数への参照のためのオブジェクトを初期化し、va_arg で型を指定して可変長引数を取りだし、va_end を使用してオブジェクトを破棄していました。しかし、途中まで可変長引数を取り出したけど、実は今までの型が間違っていて、途中から取り出しを再開したいという要求がありました。そのような場合は、始めから va_start を使ってやり直す必要がありました。しかし、この va_copy を用いることで、任意の位置の取り出し位置を覚えておけるので、その位置から再び取り出すことができるようになります。
名前 | void va_copy(va_list dst, va_list src); |
---|---|
ヘッダ | stdarg.h |
引数 | src:コピー元 dst:コピー先 |
戻値 | なし |
解説 | va_start で va_list を初期化したオブジェクト src のコピー dst を作成する |
可変長引数を使用する時には、va_start で可変長引数への参照のためのオブジェクトを初期化し、va_arg で型を指定して可変長引数を取りだし、va_end を使用してオブジェクトを破棄していました。しかし、途中まで可変長引数を取り出したけど、実は今までの型が間違っていて、途中から取り出しを再開したいという要求がありました。そのような場合は、始めから va_start を使ってやり直す必要がありました。しかし、この va_copy を用いることで、任意の位置の取り出し位置を覚えておけるので、その位置から再び取り出すことができるようになります。
by seclan