memcpy-qt和编译错误
memcpy qt and compile error
我有一个函数
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];
相关文章:
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- std::is_base_of表示ctor编译错误
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 库将ARM架构错误编译为架构X64
- RT 音频 Mac 错误 g++ 编译错误
- 错误编译Boost.log
- 错误编译QT创建者 / QT窗口小部件示例
- 错误编译MIPS32
- Visual Studio 2013 中的错误(编译和运行代码)
- 链接错误编译qt项目在visual 2010
- 无法用模板错误编译nsgmls
- 奇怪的错误.编译失败
- 如果有人调用c++中的方法,则强制错误(编译时)
- 来自autoconf测试的错误编译命令
- 时间限制超出错误C++编译
- SFML 2.3 和 CodeBlocks 错误编译