我需要在 C 中定义一个结构体和一个回调函数类型,如下所示:
typedef void (*callback)(struct XYZ* p);
struct {
int a;
int b;
callback cb;
} XYZ;
现在这段代码无法编译,因为每个定义都需要另一个。 我的意思是,如果回调定义先出现,它就不会编译,因为它需要定义结构。同样,如果先定义结构,则需要定义回调。也许这是一个愚蠢的问题,但是否有一种干净的方法来解决此类问题?
目前我的想法是使用 void * 作为回调参数,并将其类型转换为回调内的结构 XYZ。有什么想法吗?
最佳答案
在函数 typedef
之前声明 struct
(还没有定义它):
struct XYZ;
typedef void (*callback)(struct XYZ* p);
struct XYZ { // also fixed an error where your struct had no name
int a;
int b;
callback cb;
};
类似于声明函数原型(prototype)并在其定义之前调用它。
关于c - C 中的互连结构和回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19704878/