我有一个当前看起来像这样的结构(缩写为仅显示基本部分):
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;
很明显,编译器需要先了解该结构,然后才能使用它。通常如何做?使用空指针可以工作,但很难理解。
答案 0 :(得分:3)
这是通过不被遗忘并提供struct标签来实现的:
where
除了可读性外,如果您传递指向非预期结构类型的指针,编译器也会抱怨。
添加标签还可以使组件之间的连接松散。可以转发声明结构,但不能声明类型别名。