2013-05-21 3 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 (숯불)'는 C 사양에 따라, 항상 하나이므로 필요 적이 없어요. –

+0

@ JoachimPileborg 예,하지만 ... '#define char wchar'. 어떤 사람들은 이상합니다. – Dariusz

+3

누군가가 그렇게한다면 그들은 얻을 수있는 문제가 있습니다! ;) –

관련 문제