首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:类型参数‘->’(拥有‘struct xmplrpc_binding’)无效

错误:类型参数‘->’(拥有‘struct xmplrpc_binding’)无效
EN

Stack Overflow用户
提问于 2017-05-16 22:52:01
回答 2查看 3.4K关注 0票数 0

我收到了错误消息:

代码语言:javascript
复制
../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的定义是:

代码语言:javascript
复制
static struct xmplrpc_binding xmplrpc_client;

结构xmplrpc_binding

代码语言:javascript
复制
struct xmplrpc_rpc_tx_vtbl rpc_tx_vtbl;

而结构xmplrpc_rpc_tx_vtbl

代码语言:javascript
复制
struct xmplrpc_rpc_tx_vtbl {
  xmplrpc_myrpc__rpc_tx_method_fn *myrpc;
};

很明显,xmplrpc_client.rpc_tx_vtbl.myrpc是错误的,我认为我编写xmplrpc_client->rpc_tx_vtbl.myrpc的方式是正确的。

我应该做些什么来修复这个错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-16 23:14:24

当操作数(出现在运算符左侧)是指向structunion类型的指针时使用.运算符,当操作数是structunion类型的实例时使用.

所以..。

xmplrpc_client被声明为struct xmplrpc_binding的一个实例,因此您可以使用.操作符访问它的任何成员:

代码语言:javascript
复制
xmlrpc_client.rpc_tx_vtbl

成员rpc_tx_vtbl被声明为struct mplrpc_rpc_tx_vtbl的一个实例,因此再次使用.操作符访问它的任何成员:

代码语言:javascript
复制
xmlrpc_client.rpc_tx_vtbl.myrpc

因此,您的电话应该是书面的。

代码语言:javascript
复制
err = xmplrpc_client.rpc_tx_vtbl.myrpc(&xmplrpc_client, in, &s_out);
票数 1
EN

Stack Overflow用户

发布于 2017-05-16 23:01:47

为了修复错误,您应该这样写。

代码语言:javascript
复制
 xmplrpc_client.rpc_tx_vtbl.myrpc(/* and args */);

这解决了我的困惑Arrow operator (->) usage in C

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44012865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档