在struct中带有struct参数的函数指针

时间:2018-10-24 08:03:55

标签: c function-pointers

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

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;

很明显,编译器需要先了解该结构,然后才能使用它。通常如何做?使用空指针可以工作,但很难理解。

1 个答案:

答案 0 :(得分:3)

这是通过不被遗忘并提供struct标签来实现的:

where

除了可读性外,如果您传递指向非预期结构类型的指针,编译器也会抱怨。

添加标签还可以使组件之间的连接松散。可以转发声明结构,但不能声明类型别名。