2013-05-21 6 views
2

je suit struct définis dans mon fichier d'en-tête,types incompatibles dans l'affectation c

struct nl_packet { 
     int seq; 
     FRAMETYPE type; 
     CnetAddr dest; 
     CnetAddr src; 
     uint32_t checksum; 
     size_t length; 
     char data[NL_MAXDATA]; 
    }; 


struct seq_Info { 

    int seqNum; 
    size_t length; 
    char data[NL_MAXDATA]; 

}; 

struct msg_Received { 

    CnetAddr src; 
    struct seq_Info seqInfo[BUFSIZ]; 
    int lastReceived; 

}; 

puis dans un autre fichier, je l'affectation suivante qui vient avec les « types incompatibles dans l'erreur d'affectation »,

msgRec[i].seqInfo[j].data = packet.data; 

J'ai d'autres déclarations comme celle-ci dans la même méthode, mais ils fonctionnent parfaitement bien,

msgRec[i].seqInfo[j].seqNum = packet.seq; 
msgRec[i].seqInfo[j].length = packet.length; 

Même si les champs de données de la structure nl_packet et de la structure seq_Info ont tous deux le même type, cette erreur survient-elle?

Merci à l'avance

Répondre

5

Vous assignez des tableaux. Tu ne peux pas faire ça. Vous devez copier le contenu du tableau. Vous pouvez le faire comme ceci:

memcpy(msgRec[i].seqInfo[j].data, packet.data, sizeof(char)*NL_MAXDATA);

+0

'sizeof (char)' est toujours l'un, selon la spécification C, il est donc jamais eu besoin. –

+0

@JoachimPileborg ouais, mais ... '#define char wchar'. Certaines personnes sont étranges. – Dariusz

+3

Si quelqu'un fait cela, ils méritent les problèmes qu'ils auront! ;) –