4

我不知道如何转发声明一个 Windows 结构。定义是

typedef struct _CONTEXT
{
 ....
} CONTEXT, *PCONTEXT

我真的不想进入这个标题,因为它无处不在。

我试过了

结构上下文

结构 _CONTEXT

没有运气(使用 winnt.h 中的实际结构重新定义基本类型。

4

2 回答 2

9
extern "C" { typedef struct _CONTEXT CONTEXT, *PCONTEXT; }

您需要声明这_CONTEXT是一个struct. 并将其声明为extern "C"匹配 windows.h 的外部链接(这是一个 C 头文件)。

但是,您不需要为 a 提供定义typedef,但如果您这样做,则所有定义都必须匹配(一个定义规则)。

编辑:我也忘记了外部“C”。

于 2010-03-12T17:31:08.727 回答
1

不是解决方案,而是解决方法:

// h-file
struct MyContext; // forward decl
void f(MyContext * pContext); // use pointer


//cpp-file
#include <windows.h>
struct MyContext {
   CONTEXT cont;
};

void f(MyContext * pContext)
{
   CONTEXT * p_win_cont = & pContext->cont;
   // use p_win_cont
   // ....
}
于 2010-03-12T17:39:55.203 回答