2010-04-20 6 views
1

J'essaie de convertir des données en une structure à partir d'un paramètre passé dans ma méthode. J'ai besoin que les données soient passées à une variable globale comme cela est nécessaire ailleurs dans mon application.Transférer vers une variable globale à partir de LPVOID - C

J'ai essayé ce qui suit mais je reçois des erreurs disant que diceResult est un identificateur non déclaré

Voici le code lui-même:

//Structure to hold dice data 
typedef struct diceData 
{ 
    int dice1; 
    int dice2; 
}; 

struct diceResult; 

DWORD WINAPI UnpackDiceData(LPVOID sentData) 
{ 
    //Unpack data 
    struct diceData unpackedData = *((struct diceData*)sentData); 

    diceResult.dice1 = unpackedData.dice1; 
    diceResult.dice2 = unpackedData.dice2; 
} 

Je ne comprends pas pourquoi il ne le reconnaîtra pas être là quand c'est clairement global.

Répondre

1
typedef struct diceData 
{ 
    int dice1; 
    int dice2; 
}; 

Votre typedef ne fait rien. Normalement, vous devriez utiliser quelque chose comme:

typedef struct { 
    int dice1; 
    int dice2; 
} diceData; 

Ensuite, vous pouvez définir une instance de ce type:

diceData diceResult; 

... et puis votre autre code devrait être en mesure d'utiliser cette instance .

Lorsque vous avez ce travail, mon conseil serait de le réécrire de sorte qu'il le fasse pas utiliser des données globales.

+0

Merci pour la réponse, je vais être sûr d'essayer et de supprimer le besoin d'une variable globale. –