Круговое определение в С - PullRequest
1 голос
/ 21 сентября 2011

Я написал следующее:

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

} MyStatus;

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

typedef struct _MySettings
{
    MyCallback callback;
} MySettings

Однако он не скомпилируется, так как при определении MyCallback он не знает о MySettings.Если бы я поменял местами MySettings и MyCallback, все было бы наоборот: MySettings не знал бы о MyCallback.

Как обычно эта проблема решается в C?

Спасибо!

1 Ответ

7 голосов
/ 21 сентября 2011

Как насчет размещения этой строки вверху:

typedef struct _MySettings MySettings;

Этот C FAQ: Как я могу определить пару взаимно ссылочных структур? может быть полезным.

...