RPC应用-如何使用prcgen 生成多形参的函数

最近公司开发要用到RPC,就先研究了一下!过程是先构造一个.x结尾的说明书文件,然后使用rpcgen 生成RPC通信所需的x_svc.c、x_clnt.c、x_xdr.c等文件!
例如一个简单的time.x文件
program TIMEPROG { 
version PRINTIMEVERS { 
string PRINTIME( string ) = 1;
int ADD_NUM(int,int) = 2;
} = 1; 
} = 0x20000001; 

这里的ADD_NUM函数要求有多个参数,在rpcgen 的选项中好像要使用-N,但生成后的.h文件中

extern int *add_num_1(int,int,struct svc_req *);

如果是一个参数,例如
program TIMEPROG { 
version PRINTIMEVERS { 
string PRINTIME( string ) = 1;
int ADD_NUM(int) = 2;
} = 1; 
} = 0x20000001; 

使用rpcgen 时不使用-N,则生成的.h文件中

extern int *add_num_1(int *,struct svc_req *);

这里就是指针类型的形参!

实际开发中,我们不但需要多个形参,还需要支持指针类型,毕竟从远端get不止一个参数!
请问各位有什么解决办法吗?

作者: yinxue2011   发布时间: 2011-04-11

对于第一种情况,使用:
  rpcgen -C -N time.x  
不使用-N会报只支持一个参数。

对于第二种情况,使用:
  rpcgen -C time.x  
这里就只有一个指针类型的形参了!

rpcgen的选项说明中指出 -N是支持多个参数且call by vlaue,所以可能不支持指针类型的参数。
但实际开发中应该有解决的办法吧!谢谢各位了!

作者: yinxue2011   发布时间: 2011-04-11