我不知道如何转发声明一个 Windows 结构。定义是
typedef struct _CONTEXT
{
....
} CONTEXT, *PCONTEXT
我真的不想进入这个标题,因为它无处不在。
我试过了
结构上下文
和
结构 _CONTEXT
没有运气(使用 winnt.h 中的实际结构重新定义基本类型。
我不知道如何转发声明一个 Windows 结构。定义是
typedef struct _CONTEXT
{
....
} CONTEXT, *PCONTEXT
我真的不想进入这个标题,因为它无处不在。
我试过了
结构上下文
和
结构 _CONTEXT
没有运气(使用 winnt.h 中的实际结构重新定义基本类型。
extern "C" { typedef struct _CONTEXT CONTEXT, *PCONTEXT; }
您需要声明这_CONTEXT
是一个struct
. 并将其声明为extern "C"
匹配 windows.h 的外部链接(这是一个 C 头文件)。
但是,您不需要为 a 提供定义typedef
,但如果您这样做,则所有定义都必须匹配(一个定义规则)。
编辑:我也忘记了外部“C”。
不是解决方案,而是解决方法:
// 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
// ....
}