ONC+ 開発ガイド

特殊な場合

RPC 言語規則には、いくつかの例外があります。

C 形式モード

新しい機能の節で、rpcgen の C 形式モードの機能について説明しました。これらの機能は、void 引数に関連しています。引数の値が void である場合は、引数は渡される必要はありません。

ブール型

C には組み込みのブール型はありません。しかし、RPC ライブラリは、TRUE または FALSE の、bool_t と呼ばれるブール型を使用します。XDR 言語でブール型として宣言されたパラメータは、出力ヘッダーファイルの 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;

Voids

void 宣言では、変数は指定されません。void 宣言には、void 以外何も記述しません。void 宣言は、共用体定義とプログラム定義の 2 つの部分で行うことができます (たとえば、引数を渡さない遠隔手続きの引き数または結果として)。