I need to reference a struct that's not yet defined because the struct actually conatins the typedef'd function prototype.
For example,
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;
What's the valid way to actually write this code/header ?
Just forward declare the relevant types - and you can make the function pointer part of the 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;
                        Just forward declare your typedefs
typedef struct X X;
typedef struct CallbackData CallbackData;
and then declare the structs later.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With