.\" Converted for Linux, Mon Nov 29 15:11:11 1993, faith@cs.unc.edu
.\" Additions, 2001-10-14, aeb
.\"
-.\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
-.\" Translated Fri Mar 22 1998 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\" Updated Tue Oct 16 2001 by Kentaro Shirakata <argrath@ub32.org>
+.\"*******************************************************************
.\"
-.TH STDARG 3 2001-10-14 "" "Linux Programmer's Manual"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH STDARG 3 2001\-10\-14 "" "Linux Programmer's Manual"
.SH 名前
stdarg, va_start, va_arg, va_end, va_copy \- 個数・型が可変な引数リスト
.SH 書式
-.B #include <stdarg.h>
+\fB#include <stdarg.h>\fP
.sp
-.BI "void va_start(va_list " ap ", " last );
+\fBvoid va_start(va_list \fP\fIap\fP\fB, \fP\fIlast\fP\fB);\fP
.br
-.IB type " va_arg(va_list " ap ", " type );
+\fItype\fP\fB va_arg(va_list \fP\fIap\fP\fB, \fP\fItype\fP\fB);\fP
.br
-.BI "void va_end(va_list " ap );
+\fBvoid va_end(va_list \fP\fIap\fP\fB);\fP
.br
-.BI "void va_copy(va_list " dest ", va_list " src );
+\fBvoid va_copy(va_list \fP\fIdest\fP\fB, va_list \fP\fIsrc\fP\fB);\fP
.SH 説明
-関数は呼び出しに際して、個数や型が可変な引数をとることができる。
-インクルードファイル
-.I <stdarg.h>
-では
-.I va_list
-型が宣言されており、3 つのマクロが定義されている。これらを用いると、
-呼び出された関数側では個数や型を知らない引き数のリストを、順に一
-つづつ読み込むことができる。
+関数は呼び出しに際して、個数や型が可変な引数をとることができる。 インクルードファイル \fI<stdarg.h>\fP では
+\fIva_list\fP 型が宣言されており、3 つのマクロが定義されている。これらを用いると、
+呼び出された関数側では個数や型を知らない引き数のリストを、順に一 つづつ読み込むことができる。
.PP
-呼び出される関数では、
-.I va_list
-型のオブジェクトが宣言されていなければならない。このオブジェクトが
-.BR va_start (),
-.BR va_arg (),
-.BR va_end ()
-の各マクロによって扱われる。
+呼び出される関数では、 \fIva_list\fP 型のオブジェクトが宣言されていなければならない。このオブジェクトが \fBva_start\fP(),
+\fBva_arg\fP(), \fBva_end\fP() の各マクロによって扱われる。
.SS va_start()
-.BR va_start ()
-マクロは最初に呼び出さなければならない。これは
-.I ap
-を初期化し、
-.BR va_arg ()
-と
-.BR va_end ()
-で用いることができるようにする。
+\fBva_start\fP() マクロは最初に呼び出さなければならない。これは \fIap\fP を初期化し、 \fBva_arg\fP() と
+\fBva_end\fP() で用いることができるようにする。
.PP
-引き数
-.I last
-は引き数リストのうち、可変な部分の直前に置かれる引き数の名前であ
-る。つまり呼び出された関数が型を知っている最後の引き数である。
+引き数 \fIlast\fP は引き数リストのうち、可変な部分の直前に置かれる引き数の名前であ る。つまり呼び出された関数が型を知っている最後の引き数である。
.PP
-この引き数はレジスタ変数や関数、配列として
-宣言してはならない。この引き数のアドレスが
-.BR va_start ()
+この引き数はレジスタ変数や関数、配列として 宣言してはならない。この引き数のアドレスが \fBva_start\fP()
マクロで用いられるかもしれないからである。
.SS va_arg()
-.BR va_arg ()
-マクロは、呼び出し時に指定された引き数のうち、
-次の位置にあるものを指定した型
-.I type
-の値として取得する。
-引き数
-.I ap
-は
-.I va_list
-.I ap
-で、
-.BR va_start ()
-によって初期化されている必要がある。
-.BR va_arg ()
-を呼び出すごとに
-.I ap
-は変更され、次回の呼び出しの際に、さらに次の引き数を返すようになる。
-引き数
-.I type
-は型の名前である。
-.I type
-の前に * を付ければ、オブジェクトへの型付きポインタが得られる。
+\fBva_arg\fP() マクロは、呼び出し時に指定された引き数のうち、 次の位置にあるものを指定した型 \fItype\fP の値として取得する。 引き数
+\fIap\fP は \fIva_list\fP \fIap\fP で、 \fBva_start\fP() によって初期化されている必要がある。 \fBva_arg\fP()
+を呼び出すごとに \fIap\fP は変更され、次回の呼び出しの際に、さらに次の引き数を返すようになる。 引き数 \fItype\fP は型の名前である。
+\fItype\fP の前に * を付ければ、オブジェクトへの型付きポインタが得られる。
.PP
-.BR va_start ()
-マクロの直後に
-.BR va_arg ()
-を最初に実行すると、
-.I last
+\fBva_start\fP() マクロの直後に \fBva_arg\fP() を最初に実行すると、 \fIlast\fP
の次の引き数が返る。続けて実行すると、残りの引き数がそれぞれ返る。
.PP
-次の引き数がなかったり、
-.I type
-が次の引き数の実際の型と互換でない場合 (デフォルトの引き数変換で扱
-えなかった場合) には、予測できないエラーが起こる。
+次の引き数がなかったり、 \fItype\fP が次の引き数の実際の型と互換でない場合 (デフォルトの引き数変換で扱 えなかった場合)
+には、予測できないエラーが起こる。
.PP
-.I ap
-が
-.BI va_arg( ap , type )
-の形で関数に渡されると、
-.I ap
+\fIap\fP が \fBva_arg(\fP\fIap\fP\fB,\fP\fItype\fP\fB)\fP の形で関数に渡されると、 \fIap\fP
の値は関数から返って来た後は不定となる。
.SS va_end()
-.BR va_start ()
-が実行される毎に、同じ関数内で対応する
-.BR va_end ()
-が実行されなければならない。
-.BI va_end( ap )
-が呼び出された後、変数
-.I ap
-の値は不定となる。
-.BR va_start ()
-と
-.BR va_end ()
-の組を何回も並べて使うことも可能である。
-.BR va_end ()
-はマクロかもしれないし関数かもしれない。
+\fBva_start\fP() が実行される毎に、同じ関数内で対応する \fBva_end\fP() が実行されなければならない。
+\fBva_end(\fP\fIap\fP\fB)\fP が呼び出された後、変数 \fIap\fP の値は不定となる。 \fBva_start\fP() と \fBva_end\fP()
+の組を何回も並べて使うことも可能である。 \fBva_end\fP() はマクロかもしれないし関数かもしれない。
.SS va_copy()
-すぐ分かる
-.I va_list
-の実装は、variadic な関数のスタックフレームのポインタである。
-.\"argrath: variadic?
-このような場合(ほとんどはそうである)、
+.\" Proposal from clive@demon.net, 1997-02-28
+すぐ分かる \fIva_list\fP の実装は、variadic な関数のスタックフレームのポインタである。 このような場合(ほとんどはそうである)、
単に以下のようにすればいいように思える。
.in +4n
.nf
.fi
.in
-残念ながら、(長さ 1の)ポインタの配列として扱うシステムもある。
-そのような場合、以下のようにする必要がある。
+残念ながら、(長さ 1の)ポインタの配列として扱うシステムもある。 そのような場合、以下のようにする必要がある。
.in +4n
.nf
.fi
.in
-最後に、引き数をレジスタで渡すシステムの場合、
-.BR va_start ()
-でメモリを割り当て、引き数を格納し、
-次の引き数がどれかを指し示すようにする必要がある。
-そして
-.BR va_arg ()
-でリストを順番にたどり、
-.BR va_end ()
-で割り当てたメモリを開放する。
-このような状況に対応するため、C99 では
-.BR va_copy ()
-マクロを追加し、
+最後に、引き数をレジスタで渡すシステムの場合、 \fBva_start\fP() でメモリを割り当て、引き数を格納し、
+次の引き数がどれかを指し示すようにする必要がある。 そして \fBva_arg\fP() でリストを順番にたどり、 \fBva_end\fP()
+で割り当てたメモリを開放する。 このような状況に対応するため、C99 では \fBva_copy\fP() マクロを追加し、
前述のような割り当ては以下のように置き換えられるようにした。
.in +4n
.nf
.fi
.in
-.RE
-.BR va_copy ()
-が実行されるごとに、
-対応する
-.BR va_end ()
-を同じ関数内で実行しなければならない。
-この名前はまだ draft proposal なので、
-.BR va_copy ()
-の代わりに
-.B __va_copy
-を用いるシステムもある。
+\fBva_copy\fP() が実行されるごとに、 対応する \fBva_end\fP() を同じ関数内で実行しなければならない。 この名前はまだ draft
+proposal なので、 \fBva_copy\fP() の代わりに \fB__va_copy\fP を用いるシステムもある。
.SH 準拠
-.BR va_start (),
-.BR va_arg (),
-.BR va_end ()
-マクロは C89 準拠である。
-.BR va_copy ()
-は C99 で定義されている。
+\fBva_start\fP(), \fBva_arg\fP(), \fBva_end\fP() マクロは C89 準拠である。 \fBva_copy\fP() は C99
+で定義されている。
.SH 注意
-これらのマクロは、以前から用いられてきた同等のマクロ群と
-互換では\fIない\fP。過去のものと互換なバージョンは、
-インクルードファイル
-.I <varargs.h>
-に存在する。
+これらのマクロは、以前から用いられてきた同等のマクロ群と 互換では\fIない\fP。過去のものと互換なバージョンは、 インクルードファイル
+\fI<varargs.h>\fP に存在する。
.PP
歴史的なセットアップは以下のとおりである。
.in +4n
.fi
.in
-.I va_start
-マクロに \(aq}\(aq を含み、
-.I va_end
-マクロに対応する \(aq{\(aq を含むシステムもあるので、
+\fIva_start\fP マクロに \(aq}\(aq を含み、 \fIva_end\fP マクロに対応する \(aq{\(aq を含むシステムもあるので、
この二つのマクロは同じ関数になければならない。
.SH バグ
-.B varargs
-マクロとは異なり、
-.B stdarg
-マクロでは固定引き数なしで関数を指定することが許されていない。
-これは
-.B varargs
-ベースのコードを
-.B stdarg
-のコードに書き換えるときに、面倒な作業のもとになる。
-また、すべての引き数を
-.I va_list
-として可変個指定したいような場合
-.RB ( vfprintf (3)
-など) にも障害となる。
+\fBvarargs\fP マクロとは異なり、 \fBstdarg\fP マクロでは固定引き数なしで関数を指定することが許されていない。 これは
+\fBvarargs\fP ベースのコードを \fBstdarg\fP のコードに書き換えるときに、面倒な作業のもとになる。 また、すべての引き数を
+\fIva_list\fP として可変個指定したいような場合 (\fBvfprintf\fP(3) など) にも障害となる。
.SH 例
-関数
-.I foo
-は書式文字からなる文字列を受け入れ、その書式文字に対応する型で可変個の
-引き数を読み込み、印字する。
+関数 \fIfoo\fP は書式文字からなる文字列を受け入れ、その書式文字に対応する型で可変個の 引き数を読み込み、印字する。
.nf
#include <stdio.h>