Вопрос

Я не могу понять, как переслать объявление структуры Windows.Определение

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

Я действительно не хочу вдаваться в этот заголовок, поскольку он включен повсюду.

я пробовал

структура КОНТЕКСТ

и

структура _CONTEXT

безуспешно (переопределение базовых типов с использованием фактической структуры в winnt.h.

Это было полезно?

Решение

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

Вам нужно заявить, что _CONTEXT это struct.И объявить это как extern "C" чтобы соответствовать внешней связи windows.h (которая является заголовком C).

Однако вам не обязательно давать определение 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
   // ....
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top