日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
STDARG(3) FreeBSD ライブラリ関数マニュアル STDARG(3) 名称 stdarg -- 可変引数リスト 書式 #include <stdarg.h> void va_start(va_list ap, last); type va_arg(va_list ap, type); void va_copy(va_list dest, va_list src); void va_end(va_list ap); 解説 関数は、さまざまなタイプの可変の数の引数で呼び出されます。インクルード ファイル <stdarg.h> は、タイプ (va_list) を宣言し、数とタイプが呼び出され た関数に知られていない引数のリストを通して処置される 4 つのマクロを定義し ています。 呼び出される関数は、マクロ va_start(), va_arg(), va_copy() と va_end() に よって使用される、タイプ va_list のオブジェクトを宣言しなければなりませ ん。 va_start() マクロは、va_arg(), va_copy() と va_end() によってその後に使用 する ap を初期化し、最初に呼び出されなければなりません。 パラメータ last は、可変引数リストの前の最後のパラメータの名前です、すな わち、呼び出している関数がタイプを知っている最後のパラメータ。 このパラメータのアドレスが va_start() マクロで使用されるので、レジスタ変 数、または関数、または配列タイプとして宣言されるべきではありません。 va_arg() マクロは、呼び出しの次の引数のタイプと値がある式に展開します。パ ラメータ ap は、va_start() または va_copy() によって初期化された va_list ap です。va_arg() への各呼び出しは、次の呼び出しが次の引数を返すことがで きるように、ap を修正します。パラメータ type は、指定されたタイプを持つオ ブジェクトへのポインタのタイプが、単に type に * 追加することによって取得 することができますように、指定されたタイプ名です。 次の引数がないなら、または type が、(デフォルトの引数の促進にしたがって促 進されるように) 実際の次の引数のタイプと互換性がないなら、ランダムなエ ラーが生じます。 va_start() マクロの使用の後の va_arg() マクロの最初の使用は、last の後の 引数を返します。連続的な呼び出しは、残りの引数の値を返します。 va_copy() マクロは、src から dest まで va_start() によって以前に初期化さ れた、可変引数のリストをコピーします。状態は、src と共に使用される同じ 2 番目の引数がある va_start() を呼び出すことと src で呼び出されるような同じ 数回 va_arg() を呼び出すことと同等であることのように保存されます。 va_end() マクロは、可変引数のリスト ap に関連したあらゆる状態をクリーン アップします。 va_start() または va_copy() の各呼び出しは、同じ関数内の対応する va_end() 呼び出しと組み合わせられなければなりません。 戻り値 va_arg() マクロは、次の引数の値を返します。 va_start(), va_copy() と va_end() マクロは、値を返しません。 使用例 関数 foo は、書式文字の文字列を取り、タイプに基づいた各書式文字に関連する 引数を印刷 (出力) します。 void foo(char *fmt, ...) { va_list ap; int d; char c, *s; va_start(ap, fmt); while (*fmt) switch(*fmt++) { case 's': /* string (文字列) */ s = va_arg(ap, char *); printf("string %s\n", s); break; case 'd': /* int (整数) */ d = va_arg(ap, int); printf("int %d\n", d); break; case 'c': /* char (文字) */ /* 注意: char (文字) は, int (整数) に変換されます */ c = va_arg(ap, int); printf("char %c\n", c); break; } va_end(ap); } 互換性 これらのマクロは、それらを置き換える歴史的なマクロと互換性がありません。 後方互換バージョンは、インクルードファイル <varargs.h> にあります。 規格 va_start(), va_arg(), va_copy() と va_end() マクロは、ISO/IEC 9899:1999 (``ISO C99'') に適合しています。 歴史 va_start(), va_arg() と va_end() マクロは、ANSI X3.159-1999 (``ANSI C89'') で導入されました。va_copy() マクロは、ISO/IEC 9899:1999 (``ISO C99'') で導入されました。 バグ varargs マクロと異なり、stdarg マクロは、プログラマが固定引数のない関数を コード化することを許可しません。この問題は、主として varargs コードを stdarg コードに変換するとき、作業が生じますが、また、それは、vfprintf(3) のような va_list 引数をとる、関数へのそれらの引数のすべてを渡したい可変個 引数 (variadic) の関数のために困難となります。 FreeBSD 13.0 February 25, 2020 FreeBSD 13.0