C 如何使用typedef定义结构
我正在努力做到以下几点:C 如何使用typedef定义结构,c,typedef,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 ... ,这给了我一个编译错误。我试图在结构类型定义之前创建'M
typedef struct tagSTRUCT
{
MYPROC lpfnMyProc;
} STRUCT, *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT);
void version1(HSTRUCT ); // version of delegate MYPROC
void version2(HSTRUCT ); // another version
...
,这给了我一个编译错误。我试图在结构类型定义之前创建'MYPROC'的类型定义,但遇到了太多编译错误。我尝试使用struct的前向声明,但也遇到了一个编译错误:
struct tagSTRUCT;
typedef tagSTRUCT STRUCT, *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT );
struct tagSTRUCT
{
MYPROC lpfnMyProc;
};
我该怎么办?这是一种奇怪的周期性依赖,但以下方法可能有效:
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
这是一种奇怪的周期性依赖,但以下可能会起作用:
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
试试这个:
struct tagSTRUCT;
typedef void (*MYPROC)(struct tagSTRUCT *);
typedef struct tagSTRUCT {
MYPROC p;
} STRUCT, * HSTRUCT;
试试这个:
struct tagSTRUCT;
typedef void (*MYPROC)(struct tagSTRUCT *);
typedef struct tagSTRUCT {
MYPROC p;
} STRUCT, * HSTRUCT;
试试这个:
typedef struct tagSTRUCT *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT);
typedef struct tagSTRUCT
{
MYPROC lpfnMyProc;
} STRUCT;
这样,您仍然可以将其称为HSTRUCT
尝试以下方法:
typedef struct tagSTRUCT *HSTRUCT;
typedef void (*MYPROC)(HSTRUCT);
typedef struct tagSTRUCT
{
MYPROC lpfnMyProc;
} STRUCT;
通过这种方式,您仍然可以将其称为
HSTRUCT
转发声明是没有用的,因为STRUCT
有一个实际的MYPROC
成员,所以MYPROC
需要是一个完整的类型。@KerrekSB但是MYPROC
可以用转发声明的tagSTRUCT
定义,不是吗@KonradRudolph:MYPROC
只是一个typedef,所以它根本没有任何定义…@KerrekSB Err,是的。无论如何,你的答案正是我所想的。向前声明是没有用的,因为STRUCT
有一个实际的MYPROC
成员,所以MYPROC
需要是一个完整的类型。@KerrekSB但是MYPROC
可以用向前声明的tagSTRUCT
来定义,不是吗@KonradRudolph:MYPROC
只是一个typedef,所以它根本没有任何定义…@KerrekSB Err,是的。无论如何,你的答案正是我所想的。如果我能选择一个以上的最佳答案!!如果我能选择一个以上的最佳答案!!如果我能选择一个以上的最佳答案!!如果我能选择一个以上的最佳答案!!