вперед объявить структуру typedef
-
19-09-2019 - |
Вопрос
Я не могу понять, как переслать объявление структуры 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
// ....
}
Не связан с StackOverflow