0

我正在尝试执行以下操作:

typedef struct tagSTRUCT
{
    MYPROC lpfnMyProc;
} STRUCT, *HSTRUCT;

typedef void (*MYPROC)(HSTRUCT);

void version1(HSTRUCT ); // version of delegate MYPROC
void version2(HSTRUCT ); // another version
...

,这给了我一个编译错误。我试图在结构 typedef 之前制作 'MYPROC' 的 typedef,但也出现了编译错误。我尝试使用 struct 的前向声明,但也遇到了编译错误:

struct tagSTRUCT;
typedef tagSTRUCT STRUCT, *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT );
struct tagSTRUCT
{
   MYPROC lpfnMyProc;
};

我应该怎么办?

4

3 回答 3

2

尝试这个:

struct tagSTRUCT;

typedef void (*MYPROC)(struct tagSTRUCT *);

typedef struct tagSTRUCT {
    MYPROC p;
} STRUCT, * HSTRUCT;
于 2012-05-29T16:37:16.130 回答
1

试试这个:

typedef struct tagSTRUCT *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT);

typedef struct tagSTRUCT
{
    MYPROC lpfnMyProc;
} STRUCT;

这样您仍然可以将其称为HSTRUCT.

于 2012-05-29T16:39:44.470 回答
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
于 2012-05-29T16:36:23.173 回答