OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / draft / man3 / stdarg.3
index 0bbabc4..0560a72 100644 (file)
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH STDARG 3 2013\-03\-15 "" "Linux Programmer's Manual"
+.\"
+.\" 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>
+.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH STDARG 3 2013\-12\-10 "" "Linux Programmer's Manual"
 .SH 名前
 stdarg, va_start, va_arg, va_end, va_copy \- 個数、型が可変な引数リスト
 .SH 書式
@@ -71,13 +77,13 @@ stdarg, va_start, va_arg, va_end, va_copy \- 個数、型が可変な引数リ
 .PP
 引き数 \fIlast\fP は引き数リストのうち、可変な部分の直前に置かれる引き数の名前であ る。つまり呼び出された関数が型を知っている最後の引き数である。
 .PP
-この引き数はレジスタ変数や関数、配列として 宣言してはならない。この引き数のアドレスが \fBva_start\fP()
+この引き数はレジスタ変数や関数、配列として 宣言してはならない。この引き数のアドレスが \fBva_start\fP()
 マクロで用いられるかもしれないからである。
 .SS va_arg()
 \fBva_arg\fP()  マクロは、呼び出し時に指定された引き数のうち、 次の位置にあるものを指定した型 \fItype\fP の値として取得する。 引き数
 \fIap\fP は \fIva_list\fP \fIap\fP で、 \fBva_start\fP()  によって初期化されている必要がある。 \fBva_arg\fP()
 を呼び出すごとに \fIap\fP は変更され、次回の呼び出しの際に、さらに次の引き数を返すようになる。 引き数 \fItype\fP は型の名前である。
-\fItype\fP の前に * を付ければ、オブジェクトへの型付きポインタが得られる。
+\fItype\fP ã\81®å\89\8dã\81« * ã\82\92ä»\98ã\81\91ã\82\8cã\81°ã\80\81ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81¸ã\81®å\9e\8bä»\98ã\81\8dã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81\8cå¾\97ã\82\89ã\82\8cã\82\8bã\80\82
 .PP
 \fBva_start\fP()  マクロの直後に \fBva_arg\fP()  を最初に実行すると、 \fIlast\fP
 の次の引き数が返る。続けて実行すると、残りの引き数がそれぞれ返る。
@@ -97,7 +103,7 @@ stdarg, va_start, va_arg, va_end, va_copy \- 個数、型が可変な引数リ
 が現在の状態に達するまでに呼び出したのと同じ回数だけ \fBva_arg\fP() を呼び出す、のと同じことを行う。
 
 .\" Proposal from clive@demon.net, 1997-02-28
-すぐ分かる \fIva_list\fP の実装は、variadic な関数のスタックフレームのポインタである。 このような場合(ほとんどはそうである)、
\81\99ã\81\90å\88\86ã\81\8bã\82\8b \fIva_list\fP ã\81®å®\9fè£\85ã\81¯ã\80\81variadic ã\81ªé\96¢æ\95°ã\81®ã\82¹ã\82¿ã\83\83ã\82¯ã\83\95ã\83¬ã\83¼ã\83 ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81§ã\81\82ã\82\8bã\80\82 ã\81\93ã\81®ã\82\88ã\81\86ã\81ªå ´å\90\88\81»ã\81¨ã\82\93ã\81©ã\81¯ã\81\9dã\81\86ã\81§ã\81\82ã\82\8b\80\81
 単に以下のようにすればいいように思える。
 .in +4n
 .nf
@@ -106,7 +112,7 @@ va_list aq = ap;
 
 .fi
 .in
-残念ながら、(長さ 1の)ポインタの配列として扱うシステムもある。 そのような場合、以下のようにする必要がある。
+æ®\8b念ã\81ªã\81\8cã\82\89ã\80\81\95·ã\81\95 1ã\81®)ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81®é\85\8då\88\97ã\81¨ã\81\97ã\81¦æ\89±ã\81\86ã\82·ã\82¹ã\83\86ã\83 ã\82\82ã\81\82ã\82\8bã\80\82 ã\81\9dã\81®ã\82\88ã\81\86ã\81ªå ´å\90\88ã\80\81以ä¸\8bã\81®ã\82\88ã\81\86ã\81«ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8bã\80\82
 .in +4n
 .nf
 
@@ -115,9 +121,9 @@ va_list aq;
 
 .fi
 .in
\9c\80å¾\8cã\81«ã\80\81å¼\95ã\81\8dæ\95°ã\82\92ã\83¬ã\82¸ã\82¹ã\82¿ã\81§æ¸¡ã\81\99ã\82·ã\82¹ã\83\86ã\83 ã\81®å ´å\90\88ã\80\81 \fBva_start\fP()  ã\81§ã\83¡ã\83¢ã\83ªを割り当て、引き数を格納し、
\9c\80å¾\8cã\81«ã\80\81å¼\95ã\81\8dæ\95°ã\82\92ã\83¬ã\82¸ã\82¹ã\82¿ã\83¼ã\81§æ¸¡ã\81\99ã\82·ã\82¹ã\83\86ã\83 ã\81®å ´å\90\88ã\80\81 \fBva_start\fP()  ã\81§ã\83¡ã\83¢ã\83ªã\83¼を割り当て、引き数を格納し、
 次の引き数がどれかを指し示すようにする必要がある。 そして \fBva_arg\fP()  でリストを順番にたどり、 \fBva_end\fP()
-で割り当てたメモリを開放する。 このような状況に対応するため、C99 では \fBva_copy\fP()  マクロを追加し、
\81§å\89²ã\82\8aå½\93ã\81¦ã\81\9fã\83¡ã\83¢ã\83ªã\83¼ã\82\92é\96\8bæ\94¾ã\81\99ã\82\8bã\80\82 ã\81\93ã\81®ã\82\88ã\81\86ã\81ªç\8a¶æ³\81ã\81«å¯¾å¿\9cã\81\99ã\82\8bã\81\9fã\82\81ã\80\81C99 ã\81§ã\81¯ \fBva_copy\fP()  ã\83\9eã\82¯ã\83­ã\82\92追å\8a ã\81\97ã\80\81
 前述のような割り当ては以下のように置き換えられるようにした。
 .in +4n
 .nf
@@ -131,6 +137,9 @@ va_end(aq);
 .in
 \fBva_copy\fP()  が実行されるごとに、 対応する \fBva_end\fP()  を同じ関数内で実行しなければならない。 この名前はまだ draft
 proposal なので、 \fBva_copy\fP()  の代わりに \fB__va_copy\fP を用いるシステムもある。
+.SH 属性
+.SS "マルチスレッディング (pthreads(7) 参照)"
+マクロ \fBva_start\fP(), \fBva_arg\fP(), \fBva_end\fP(), \fBva_copy\fP() はスレッドセーフである。
 .SH 準拠
 \fBva_start\fP(), \fBva_arg\fP(), \fBva_end\fP()  マクロは C89 準拠である。 \fBva_copy\fP()  は C99
 で定義されている。
@@ -203,6 +212,6 @@ foo(char *fmt, ...)
 }
 .fi
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。