C typedef函数原型,结构在定义之前尝试引用.

Ada*_*M-W 7 c struct

我需要引用一个尚未定义的结构,因为struct实际上包含了typedef'd函数原型.

例如,

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;
Run Code Online (Sandbox Code Playgroud)

实际编写此代码/标头的有效方法是什么?

Ker*_* SB 5

只需向前声明相关类型 - 您就可以将函数指针作为 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;
Run Code Online (Sandbox Code Playgroud)


Jen*_*edt 5

只是向前宣布你的typedefs

typedef struct X X;
typedef struct CallbackData CallbackData;
Run Code Online (Sandbox Code Playgroud)

然后再声明structs.