不兼容的类型分配ç
问题描述:
我按照我的头文件中定义结构,不兼容的类型分配ç
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);
'的sizeof(char)的'始终是一个当按照C规范,所以它从来没有需要。 –
@JoachimPileborg是的,但是......'#define char wchar'。有些人很奇怪。 – Dariusz
如果有人这样做,他们应得的问题,他们将得到! ;) –