c++ - FreeFileSync C++ 错误:“字节”不是“标准”的成员
问题描述
我正在尝试构建开源程序并收到此错误:
$ make
mkdir -p ../Obj/FFS_GCC_Make_Release/ffs/src/base/
g++ -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread `pkg-config --cflags gtk+-2.0` -c base/algorithm.cpp -o ../Obj/FFS_GCC_Make_Release/ffs/src/base/algorithm.o
In file included from base/../fs/abstract.h:13:0,
from base/structures.h:14,
from base/file_hierarchy.h:20,
from base/algorithm.h:11,
from base/algorithm.cpp:7:
../../zen/serialize.h:35:45: error: ‘byte’ is not a member of ‘std’
using value_type = std::vector<std::byte>::value_type;
^~~~
compilation terminated due to -Wfatal-errors.
Makefile:108: recipe for target '../Obj/FFS_GCC_Make_Release/ffs/src/base/algorithm.o' failed
make: *** [../Obj/FFS_GCC_Make_Release/ffs/src/base/algorithm.o] Error 1
这个源文件包含#include <cstdint>
这是代码的一个问题部分:
using value_type = std::vector<std::byte>::value_type;
重现方法:从官网下载FreeFileSync源码,解压
cd FreeFileSync_10.4_Source\FreeFileSync\Source
make
Windows Subsystem for Linux 下的 gcc 版本 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)
解决方案
添加#include <cstddef>
到 serialize.h 和 ring_buffer.h
cd ../../zen/
grep -q -F '<cstddef>' serialize.h || sed -i '1s/^/#include <cstddef>\n/' serialize.h
grep -q -F '<cstddef>' ring_buffer.h || sed -i '1s/^/#include <cstddef>\n/' ring_buffer.h
推荐阅读
- python - 在 Python 中保存斜率系数
- assembly - RISC-V 汇编语言程序将华氏温度转换为摄氏温度
- javascript - Javascript 代码仅在 Chrome 开发者工具打开时在 Chrome 中有效
- android - 编写一个使用 KeyEvent 将文本插入文本字段的 Android 系统应用程序。但扩展的 unicode 字符不可打印
- python - 我如何在 tkinter 中创建带有背景的圆形按钮
- wordpress - 在以前的多站点 WordPress 安装中无法查看、更改、添加或删除插件或主题。我应该怎么办?
- python - 尝试使用套接字和 tkinter 制作服务器应用程序
- sql - 混合索引和非索引字段的Django过滤器的效率?
- powerbi - azure 中嵌入的 powerbi 是否没有管理工作区、报告等的门户?
- c++ - 在类中使用结构对象