我需要引用一个尚未定义的结构体,因为该结构体实际上包含了类型定义函数原型。
例如,
typedef int (MyCallbackFunction)(X * x, void * ctx);
typedef struct CallbackData {
MyCallbackFunction * callback;
void * ctx;
} CallbackData;
typedef struct X {
char a;
int b;
int c;
double d;
CallbackData e;
} X;实际编写此代码/标头的有效方法是什么?
发布于 2011-07-31 06:21:13
只需向前声明相关的类型--你就可以让函数指针成为typedef的一部分:
struct X_;
typedef int (*MyCallbackFunction)(struct X_ * x, void * ctx);
typedef struct CallbackData_ {
MyCallbackFunction callback;
void * ctx;
} CallbackData;
typedef struct X_ {
char a;
int b;
int c;
double d;
CallbackData e;
} X;发布于 2011-07-31 06:23:29
只需向前声明您的typedef%s
typedef struct X X;
typedef struct CallbackData CallbackData;然后声明struct%s。
发布于 2011-07-31 06:21:11
是的,您可以向前声明结构,并在不需要它是完整类型的MyCallbackFunction的声明中使用它。
struct X;
typedef int (MyCallbackFunction)(struct X * x, void * ctx);https://stackoverflow.com/questions/6886303
复制相似问题