Definição circular em C

O que eu escrevi é:

typedef enum _MyStatus
{
    MY_STATUS_OK = 0,
    MY_STATUS_GENERAL_ERROR = -1,

} MyStatus;

typedef MyStatus (*MyCallback)(MySettings *settings);

typedef struct _MySettings
{
    MyCallback callback;
} MySettings

No entanto, não seria compilado, pois ao definir o MyCallback, ele não conhece o MySettings. Se eu trocasse o MySettings e o MyCallback, seria o contrário: o MySettings não saberia do MyCallback.

Como geralmente esse tipo de problema é tratado em C?

Obrigado

questionAnswers(1)

yourAnswerToTheQuestion