gpt4 book ai didi

c - struct 中带有 struct 参数的函数指针

转载 作者:行者123 更新时间:2023-12-05 03:04:27 26 4
gpt4 key购买 nike

我有一个目前看起来像这样的结构(缩写为仅显示基本部分):

typedef struct {
uint32_t baudrate;
... some other internally used values here
void (*request_received)(void* hbus); //< this is what I'm talking about
} hbus_options_t;

这行得通。基本上它包含一个函数指针,该指针采用指向 void 类型参数的指针。

我真正想要的是让它更容易理解:

typedef struct {
uint32_t baudrate;
... some other internally used values here
void (*request_received)(hbus_options_t* hbus); //< this doesn't work
} hbus_options_t;

显然,编译器需要知道该结构,然后我才能使用它。这通常是如何完成的?使用 void 指针可行,但更难理解。

最佳答案

这是通过不疏忽并提供结构标签来完成的:

typedef struct hbus_options {
uint32_t baudrate;
... some other internally used values here
void (*request_received)(struct hbus_options * hbus);
} hbus_options_t;

除了可读性之外,如果您将指针传递给预期结构类型以外的对象,编译器也会报错。

添加标签还允许组件的松散耦合。可以转发声明一个结构,但不能转发类型别名。

关于c - struct 中带有 struct 参数的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52963814/

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