gpt4 book ai didi

c - 了解 C 中回调的情况

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:44 25 4
gpt4 key购买 nike

我想了解这段代码的实际含义,尤其是。函数放在花括号中的最后一部分。 broadcast_open 函数是否以某种方式调用函数 broadcast_recv?如果是,如何?

static void broadcast_recv(struct broadcast_conn *c, const rimeaddr_t *from)
{
printf("broadcast message received from %d.%d: '%s'\n",
from->u8[0], from->u8[1], (char *)packetbuf_dataptr());
}

static const struct broadcast_callbacks broadcast_call = {broadcast_recv};
static struct broadcast_conn broadcast;

PROCESS_THREAD(example_broadcast_process, ev, data)
{

broadcast_open(&broadcast, 129, &broadcast_call);

...

}

void broadcast_open(struct broadcast_conn *c, uint16_t channel, const struct broadcast_callbacks *u)
{
abc_open(&c->c, channel, &broadcast);
c->u = u;
channel_set_attributes(channel, attributes);
}

最佳答案

似乎 broadcast_callbacks 是一个定义如下的结构:

struct broadcast_callbacks
{
void (*callback)(struct broadcast_conn *, const rimeaddr_t *from);
};

然后是行

static const struct broadcast_callbacks broadcast_call = {broadcast_recv};

创建一个新的结构对象,其成员指向 broadcast_recv 函数。该成员现在可用于调用 broadcast_recv(这可能是 broadcast_open 的一部分)。

关于c - 了解 C 中回调的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6685331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com