| 
 |  | 
The rpcgen compiler supports C and other preprocessing features.
C-preprocessing is performed on rpcgen input files before they are compiled. All C-preprocessing directives are valid within a .x file. Five symbols may be defined by rpcgen, depending on the type of output file being generated. The symbols are:
| Symbol | Usage | 
|---|---|
| RPC_HDR | Header file output | 
| RPC_XDR | XDR routine output | 
| RPC_SVC | Server skeleton output | 
| RPC_CLNT | Client stub output | 
| RPC_TBL | Index table output | 
The rpcgen compiler provides an additional preprocessing feature: any line that begins with a percent sign (%) is passed directly into the output file, without any interpretation of the line.
This is a simple example that illustrates rpcgen preprocessing features:
   /*
    * time.x: Remote time protocol
    */
   program TIMEPROG {
   	version TIMEVERS {
   			unsigned int TIMEGET(void) = 1;
   	} = 1;
   } = 0x20000044;
   
   #ifdef RPC_SVC
   %int *
   %timeget_1()
   %{
   %	static int thetime;
   %
   %	thetime = time(0);
   %	return (&thetime);
   %}
   #endif