Domanda

Non riesco a capire come di trasmettere dichiarare una struct finestre. La definizione è

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

Io davvero non voglio tirare in questa intestazione, come si arriva ovunque incluso.

Ho provato

struct CONTESTO

e

struct _CONTEXT

senza fortuna (ridefinizione dei tipi di base con lo struct actuall in winnt.h.

È stato utile?

Soluzione

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

È necessario dichiarare che _CONTEXT è un struct. E dichiarare come extern "C" adatta al collegamento esterno di windows.h (che è un'intestazione C).

Tuttavia, non è necessario fornire una definizione per una typedef, ma se lo fai, tutte le definizioni necessario abbinare ( una Definizione regola ).

EDIT:. Ho anche dimenticato l'extern "C"

Altri suggerimenti

Non è una soluzione, ma soluzione:

// 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
   // ....
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top