rpcgen では、C 言語などの前処理命令をサポートしています。rpcgen の入力ファイルに入っている C 言語の前処理命令は、コンパイル前に処理されます。.x ソースファイルでは、標準 C のすべての前処理命令を使用できます。生成する出力ファイルのタイプによって、次の 5 つのシンボルが rpcgen によって定義されます。
rpcgen 入力ファイルのパーセント記号 (%) で始まる行はそのまま出力ファイルに書き出され、その行の内容には影響を及ぼしません。そのとき、意図した位置に出力されるとは限らないため注意が必要です。出力ファイルのどこに書き出されたか確認して、必要ならば編集し直してください。
rpcgen で使用される前処理命令を、次の表で示します。
表 3–1 rpcgen の前処理命令|
シンボル |
使用目的 |
|---|---|
|
ヘッダーファイルの出力 |
|
|
XDR ルーチンの出力 |
|
|
サーバー側スタブプログラムの出力 |
|
|
クライアント側スタブプログラムの出力 |
|
|
インデックステーブルの出力 |
次に、簡単な rpcgen コードの例を示します。rpcgen の前処理機能の使用方法に注意してください。
/*
* time.x: リモート時刻のプロトコル
*/
program TIMEPROG {
version TIMEVERS {
unsigned int TIMEGET() = 1;
} = 1;
} = 0x20000044;
#ifdef RPC_SVC
%int *
%timeget_1()
%{
% static int thetime;
%
% thetime = time(0);
% return (&thetime);
%}
#endif
|