我正在尝试执行以下操作:
typedef struct tagSTRUCT
{
MYPROC lpfnMyProc;
} STRUCT, *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT);
void version1(HSTRUCT ); // version of delegate MYPROC
void version2(HSTRUCT ); // another version
...
,这给了我一个编译错误。我试图在struct typedef之前创建'MYPROC'的typedef但是得到了太多的编译错误。我试图使用struct的前向声明并且还出现了编译错误:
struct tagSTRUCT;
typedef tagSTRUCT STRUCT, *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT );
struct tagSTRUCT
{
MYPROC lpfnMyProc;
};
我该怎么办?
答案 0 :(得分:2)
试试这个:
struct tagSTRUCT;
typedef void (*MYPROC)(struct tagSTRUCT *);
typedef struct tagSTRUCT {
MYPROC p;
} STRUCT, * HSTRUCT;
答案 1 :(得分:1)
这是一个奇怪的循环依赖,但以下可能有效:
struct tagSTRUCT;
typedef struct tagSTRUCT *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT*);
typedef struct tagSTRUCT
{
MYPROC lpfnMyProc;
} STRUCT, *HSTRUCT;
void version1(HSTRUCT ); // version of delegate MYPROC
void version2(HSTRUCT ); // another version
答案 2 :(得分:1)
试试这个:
typedef struct tagSTRUCT *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT);
typedef struct tagSTRUCT
{
MYPROC lpfnMyProc;
} STRUCT;
这样您仍然可以将其称为HSTRUCT
。