不兼容的类型分配ç

问题描述:

我按照我的头文件中定义结构,不兼容的类型分配ç

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; 

}; 

,然后在另一个文件中,我有以下的作业,自带的“不兼容类型分配错误”,

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

我有相同的方法等说法是这样,但他们的工作完全正常,

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

即使两个,nl_packet结构和seq_Info结构中的数据字段都具有相同的类型,那么这个错误是否会出现?

在此先感谢

您正在分配数组。你不能这样做。您必须复制数组内容。你可能不喜欢这样:

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

+0

'的sizeof(char)的'始终是一个当按照C规范,所以它从来没有需要。 –

+0

@JoachimPileborg是的,但是......'#define char wchar'。有些人很奇怪。 – Dariusz

+3

如果有人这样做,他们应得的问题,他们将得到! ;) –