0

私は次のことをしようとしています:

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

typedef void (*MYPROC)(HSTRUCT);

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

、コンパイルエラーが発生します。structtypedefの前に'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

これは奇妙な周期的依存関係ですが、以下が機能する可能性があります。

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 に答える
1

これを試してみてください:

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

typedef struct tagSTRUCT
{
    MYPROC lpfnMyProc;
} STRUCT;

このように、あなたはまだそれをとして参照することができますHSTRUCT

于 2012-05-29T16:39:44.470 に答える