我无法弄清楚如何转发声明一个windows结构。定义是
typedef struct _CONTEXT
{
....
} CONTEXT, *PCONTEXT
我真的不想进入这个标题,因为它包含在任何地方。
我试过
struct CONTEXT
和
struct _CONTEXT
没有运气(在winnt.h中使用actuall结构重新定义基本类型。
答案 0 :(得分:9)
extern "C" { typedef struct _CONTEXT CONTEXT, *PCONTEXT; }
您需要声明_CONTEXT
是struct
。并声明它为extern "C"
以匹配windows.h的外部链接(这是一个C头)。
但是,您无需为typedef
提供定义,但如果您这样做,则所有定义必须匹配(One Definition Rule)。
答案 1 :(得分: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
// ....
}