2013-05-21 55 views
2

我按照我的頭文件中定義結構,不兼容的類型分配ç

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結構中的數據字段都具有相同的類型,那麼這個錯誤是否會出現?

在此先感謝

回答

5

您正在分配數組。你不能這樣做。您必須複製數組內容。你可能不喜歡這樣:

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

+0

'的sizeof(char)的'始終是一個當按照C規範,所以它從來沒有需要。 –

+0

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

+3

如果有人這樣做,他們應得的問題,他們將得到! ;) –

相關問題