【发布时间】:2014-03-08 23:59:22
【问题描述】:
这是我的代码库的一部分。 我没有得到警告的含义,因此无法解决此问题... 代码:
struct ParamsTube{
uint8 Colours01[4];
uint8 Colours02[4];
uint8 Colours03[4];
};
void sample_fun(const uint8 *diagData){
ParamsTube Record;
memcpy(&Record.Colours01[0], &diagData[0], 4); //Line 1
memcpy(&Record.Colours02[0], &diagData[4], 4); //Line 2
memcpy(&Record.Colours03[0], &diagData[8], 4); //Line 3
}
第 1,2 和第 3 行此逻辑的 LINT 警告 426 是
Call to function 'memcpy(void *, const void *, std::size_t)' violates semantic '(3n>4)'
你能告诉我这到底是什么意思吗.....
【问题讨论】:
-
您将相同的值复制到所有颜色变量中。源始终是
&diagData[0]。您的意思是&diagData[0]、&diagData[4]和&diagData[8]? -
对不起 ..我已经正确修改了 ..它的应对 frm diagdata[0],1 和 2 ...这是在上面修改的..现在对于这个代码库我收到了警告..
-
@MariusBancila,索引应该是 4 的倍数吗????
-
作为旁注,我会使用 sizeof(uint8)。
-
我认为这是来自 lint 而不是编译器的消息是否正确?