如何使用typedef定义结构

时间:2012-05-29 16:31:52

标签: c typedef

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

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;
};

我该怎么办?

3 个答案:

答案 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