| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 5 : その他の機能 > sstdarg(5)HP-UX 11i Version 2: September 2004 |
|
名称stdarg.h ― 可変個の引き数リストを操作するマクロ 構文#include <stdarg.h> 説明<stdarg.h> ヘッダには、 可変個の引き数リストを受け取ることのできる手続きを、 移植可能な方法で書くための、 マクロの集合があります。 (printf() のように) 可変個の引き数リストを持つルーチンを stdarg を使わずに書くと、 引き数を渡す規約がマシンごとに異なっていますので、 移植不可能になってしまいます。 va_list は、リストをトラバースするのに使われる変数のために定義された型です。 va_start は、 pvar を初期化してリストの先頭を指すようにするために呼び出します。 argN の型は、 関数の引き数リストの可変部分の直前の引き数と同じでなければなりません。 va_arg は、リストの中で pvar で指し示される、次の引き数を返します。 type は、取り出す引き数の型です。 異なった型を混合することができますが、 ルーチンには取り出す引き数がどの型なのかを知らせる必要があります。 実行時には判定できないからです。 va_end は、クリーンアップに使います。 それぞれを va_start ... va_end で囲むと、複数のトラバーサルができます。 注記: <stdarg.h> ヘッダーファイルは <varargs.h> ヘッダーを置き換えるものであり、 varargs マクロがすべて含まれています。 <varargs.h> は、ANSI 以前のコンパイラおよび HP C/HP-UX の以前のリリースとの互換性を保つために提供されています。 例この例は、 execl のインプリメンテーションです ( exec(2)を参照)。 #include <stdarg.h> 警告引き数の数は、 スタックフレームより判定できない場合があるので、 ルーチンを呼ぶときに指定します。 例えば、 execl() ではリストの終わりを知らせるのにゼロポインタを渡し、また printf() ではフォーマットの文字列により、引き数の数を知らせることができます。 ANSI C を使わない場合は、 va_arg の 2 番目の引き数に char, short, あるいは float を指定すると、移植不可能になるかもしれません。 なぜなら、呼び出された関数では、引き数は決して char, short, あるいは float ではないからです。 ANSI C 以前の C では、引き数を関数に渡す前に、 char および short 引き数を int に変換し、また float 引き数を double に変換します。 |
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||