2010-01-14 5 views
2

Mon professeur m'a demandé de pouvoir structurer (lancer) le pointeur en mémoire afin d'interpréter plus facilement les données. J'ai demandé à ce sujet en classe aujourd'hui et c'est ce qu'il a dit fonctionnerait.Superposition d'une structure sur un pointeur u_char

Ce ne compile pas se plaindre de la façon dont il ne peut pas le lancer. Qu'est-ce que je fais de mal? Je suis sur le point de recourir à l'analyse des données manuellement ...

struct DataStruct 
{ 
    u_char DEST_ADDRESS[6]; 
    u_char SOURCE_ADDRESS[6]; 
}; 

struct DataStruct* testData; 
testData = (struct DataStruct*)pkt_data; 
+1

Quelle erreur le compilateur vous donne? Pouvez-vous construire un cas de test complet (mais petit) qui ne dépend pas de quelque chose de non déclaré/délaissé? –

+0

Comment avez-vous une adresse de 6 octets? Est-ce une architecture 48 bits? – Tarydon

+0

@Tarydon - Les adresses MAC (Ethernet, 802.11, etc.) sont 48 bits. –

Répondre

1

Vous ne pouvez pas avoir une déclaration en dehors d'une fonction.

Change:

struct DataStruct* testData;    // definition okay outside function 
testData = (struct DataStruct*)pkt_data; // statement not okay outside function 

à:

struct DataStruct* testData = (struct DataStruct*)pkt_data; // definition with 
                  // initializer okay 
                  // outside function 
Questions connexes