【发布时间】:2024-01-08 22:53:01
【问题描述】:
我遇到了上述错误request member rv in something not a structure of union。我用谷歌搜索了它,几个答案告诉我这是在使用指针但尝试将其作为结构访问时,我应该使用 -> 而不是 .
int foo(void * arg, struct message * msg)
{
struct fd_info * info = (struct something *) arg;
struct client * csys = info->c_sys;
int * socks[MAX_CONNECTION];
int rv;
socks = &(info->_socks); // where int * _socks[MAX_CONNECTION] in struct info
// do other things
rv = sendto(socks[i], msg, sizeof(msg), NULL, &(csys->client_address), sizeof(csys->client_address));
...
}
问题是我所有的参数都是指针。我对出了什么问题感到困惑。感谢任何 cmets/想法。
编辑: 对不起&味精,它最初只是味精,但在我绝望的尝试中,我正在尝试一些事情。 添加了 rv 的定义。
【问题讨论】:
-
您是否遗漏了一些正确的语法,上面写着“做其他事情”?
-
请显示
rv的定义 -
另外,
csys的定义可能会有所帮助。 -
sizeof(msg)返回指针msg的大小,而不是msg指向的缓冲区大小。 -
大多数编译器在其错误消息中输出行号。您能否指出示例中的哪一行导致了问题?如果它在
rv = sendto(...),也许你可以在每个参数后添加一个回车,它会告诉你编译器在抱怨哪个表达式。