Pregunta

No puedo encontrar la manera de declarar transmita una estructura ventanas. La definición es

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

Realmente no quiero tirar en esta cabecera, ya que se incluye en todas partes.

He intentado

struct CONTEXTO

y

struct _context

sin suerte (redefinición de los tipos básicos con la estructura tendrán algo en winnt.h.

¿Fue útil?

Solución

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

Es necesario para declarar que es un _CONTEXT struct. Y declararemos como extern "C" para que coincida con la unión externa de windows.h (que es una cabecera de C).

Sin embargo, no es necesario proporcionar una definición de una typedef, pero si lo hace, todas las definiciones debe coincidir (la Una definición de regla ).

EDIT:. También se me olvidó el extern "C"

Otros consejos

No es solución, pero la solución:

// 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
   // ....
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top