我收到了错误消息:
../usr/examples/xmpl-rpc/rpc_rpc.c: In function ‘send_myrpc’:
../usr/examples/xmpl-rpc/rpc_rpc.c:40:25: error: invalid type argument of ‘->’ (have ‘struct xmplrpc_binding’)
err = xmplrpc_client->rpc_tx_vtbl.myrpc(&xmplrpc_client, in, &s_out);
^xmplrpc_client的定义是:
static struct xmplrpc_binding xmplrpc_client;结构xmplrpc_binding有
struct xmplrpc_rpc_tx_vtbl rpc_tx_vtbl;而结构xmplrpc_rpc_tx_vtbl是
struct xmplrpc_rpc_tx_vtbl {
xmplrpc_myrpc__rpc_tx_method_fn *myrpc;
};很明显,xmplrpc_client.rpc_tx_vtbl.myrpc是错误的,我认为我编写xmplrpc_client->rpc_tx_vtbl.myrpc的方式是正确的。
我应该做些什么来修复这个错误?
发布于 2017-05-16 23:14:24
当操作数(出现在运算符左侧)是指向struct或union类型的指针时使用.运算符,当操作数是struct或union类型的实例时使用.。
所以..。
xmplrpc_client被声明为struct xmplrpc_binding的一个实例,因此您可以使用.操作符访问它的任何成员:
xmlrpc_client.rpc_tx_vtbl成员rpc_tx_vtbl被声明为struct mplrpc_rpc_tx_vtbl的一个实例,因此再次使用.操作符访问它的任何成员:
xmlrpc_client.rpc_tx_vtbl.myrpc因此,您的电话应该是书面的。
err = xmplrpc_client.rpc_tx_vtbl.myrpc(&xmplrpc_client, in, &s_out);发布于 2017-05-16 23:01:47
为了修复错误,您应该这样写。
xmplrpc_client.rpc_tx_vtbl.myrpc(/* and args */);这解决了我的困惑Arrow operator (->) usage in C
https://stackoverflow.com/questions/44012865
复制相似问题