【发布时间】:2021-06-20 07:39:32
【问题描述】:
我正在使用 rpcgen 编写一个简单的客户端-服务器计算器,但出现编译错误。这是.x 文件(calculadora.x):
union resultado_calculo switch (int err)
{
case 0:
int resultado;
default:
void;
};
program CALCULADORA_PROG
{
version CALCULADORA_VER
{
resultado_calculo Suma (int, int) = 1;
resultado_calculo Resta (int, int) = 2;
resultado_calculo Producto (int, int) = 3;
resultado_calculo Cociente (int, int) = 4;
} = 1;
} = 20000001;
运行 rpcgen -NCa calculadora.x 会创建以下文件:
total 40K
drwxr-xr-x 2 groctel groctel 4.0K Mar 23 16:40 .
drwxr-xr-x 3 groctel groctel 4.0K Mar 23 16:10 ..
-rw-r--r-- 1 groctel groctel 1.3K Mar 23 16:27 calculadora_client.c
-rw-r--r-- 1 groctel groctel 1.9K Mar 23 16:22 calculadora_clnt.c
-rw-r--r-- 1 groctel groctel 1.1K Mar 23 15:56 calculadora_server.c
-rw-r--r-- 1 groctel groctel 3.5K Mar 23 16:22 calculadora_svc.c
-rw-r--r-- 1 groctel groctel 1.2K Mar 23 16:23 Makefile.calculadora
-rw-r--r-- 1 groctel groctel 2.7K Mar 23 16:22 calculadora.h
-rw-r--r-- 1 groctel groctel 348 Mar 23 16:22 calculadora.x
现在,我已经填写了客户端和服务器的模板并运行了几次程序。我必须用make CFLAGS+="-I/usr/include/tirpc -ltirpc" -f Makefile.calculadora 编译以包含我系统的rpc 库,但那里没有真正的问题。我也运行了几次程序,所有操作都运行良好(例如./calculadora 3 + 2 返回5)。
但是,我今天再次访问make 程序,得到以下输出:
➜ make CFLAGS+="-I/usr/include/tirpc -ltirpc" -f Makefile.calculadora
rpcgen calculadora.x
resultado_calculo Suma (int, int) = 1;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
calculadora.x, line 13: only one argument is allowed
make: *** [Makefile.calculadora:32: calculadora_xdr.c] Error 1
我不明白为什么现在出现错误而不是以前出现,因为程序昨天运行良好。这是我正在编译的Suma 函数:
resultado_calculo *
suma_1_svc(int arg1, int arg2, struct svc_req *rqstp)
{
static resultado_calculo result;
xdr_free(xdr_resultado_calculo, &result);
result.resultado_calculo_u.resultado = arg1 + arg2;
return &result;
}
其他功能与不同的运算符完全相同(-、* 和/)。我做错了什么?
【问题讨论】: