memcpy-qt和编译错误

memcpy qt and compile error

本文关键字:错误 编译 memcpy-qt      更新时间:2023-10-16

我有一个函数

SCalibration(uint8_t number, const ABC::report& report,
                         return* ret)
{
    uint8_t args[2];
    args[0]=number;
    memcpy(&(args[1],&report,sizeof(ABC::report)));
}

其中报表是ABC文件中具有不同数据类型的结构。当我试图编译时,我得到了错误"L值需要作为一元操作数。

请帮助

memcpy(&(args[1],&report,sizeof(ABC::report)));

应该是

memcpy(&(args[1]),&report,sizeof(ABC::report));

您还应该确保args足够大以容纳结果。

您有一些流氓括号;看起来你是指

memcpy(&args[1],&report,sizeof(ABC::report));

以将CCD_ 2的字节复制到CCD_。

现在的问题是,如果报告大于一个字节,这将使数组溢出。也许你想要:

uint8_t args[1 + sizeof(ABC::report)];

这一行有一组放错地方的()

memcpy(&(args[1],&report,sizeof(ABC::report)));

看起来像你想要的:

memcpy(&(args[1]),&report,sizeof(ABC::report));

我的下一个观察结果是,你的目的地只有1 byte,你的来源report的大小只有1 byte吗?如果不是的话,你有一个溢出,这是未定义的行为。一种解决方案是根据您的数据大小调整args的大小:

uint8_t args[sizeof(ABC::report)+1];