typedef void (* B)(C *);
typedef struct
{
[..]
B b;
} A;
typedef struct
{
[..]
A * a;
} C;
Уже битый час бьюсь, не могу понять, можно ли решить это нормальным способом. В C всего лишь указатель на A, поэтому скорее всего можно как-то задекларить.