Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
655 views
in Technique[技术] by (71.8m points)

struct - Circular definition in C

What I've written is:

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

} MyStatus;

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

typedef struct _MySettings
{
    MyCallback callback;
} MySettings

However, it wouldn't compile as when defining MyCallback it doesn't know of MySettings. If I swapped MySettings and MyCallback, it would be the other way round: MySettings wouldn't know of MyCallback.

How generally is this sort of problem handled in C?

Thanks!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

How about putting this line at the top:

typedef struct _MySettings MySettings;

This C FAQ: How can I define a pair of mutually referential structures? might be of use.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...