この節では、rpcgen の C-style モードの機能について説明します。これらの機能は、void 引数の引き渡しに関してかかわっています。値が void の場合、引数が引き渡される必要はありません。
C には組み込み型のブール型はありません。ただし、RPC ライブラリは、TRUE または FALSE のうちいずれかの bool_t
と呼ばれるブール値を使用します。XDR 言語で型 bool
として宣言されたパラメタは、コンパイルされると、出力ヘッダファイルでbool_t
になります。
次に例を示します。
bool married; --> bool_t married;
C 言語は組み込み型の文字列型ではありませんが、代わりに null で終了する char *
規則を使用します。C では、文字列は通常 null で終了する単一配列であるとみなされます。
XDR 言語では、string キーワードを使用して文字列が宣言されて、出力ヘッダファイルで char *
型にコンパイルされます。山括弧でくくられた最大サイズは、文字列で使用できる最大文字数を指定します(NULL文字をカウントしません)。 任意の文字列のサイズを表す場合は、最大サイズを省略することができます。
次に例を示します。
string name<32>; --> char *name; string longname<>; --> char *longname;
NULL 文字列は引き渡されません。ただし、0 長の文字列 (つまりターミネータだけ、または NULL バイト) は引き渡されます。
隠されたデータは、未入力のデータ、つまり任意のバイトのシーケンスを記述するために、XDR で使用されます。隠されたデータは、固定長または可変長配列として宣言できます。次に例を示します。
opaque diskblock[512]; --> char diskblock[512]; opaque filedata<1024>; --> struct { u_int filedata_len; char *filedata_val; } filedata;
void 宣言では、変数を指定できません。宣言は、void だけで、Void 宣言が使用されるのは、共用体およびプログラム定義 (遠隔手続きの引数または結果として、引数が引き渡されなかったなどで使用される) の 2 箇所だけです。