我有RHEL和GCC 4.1.2,我的C ++代码按预期编译。但是当我尝试使用GCC 6.2.0在CentOS 7.2上编译时,相同的代码失败并出现以下错误:
compiling UpcSummarization.o ...
UpcSummarization.cpp: In member function âvoid UpcSummarization::LoadUpcList(std::__cxx11::string)â:
UpcSummarization.cpp:480:40: error: âmemsetâ was not declared in this scope
memset(&pBuffer, 0, sizeof(100));
^
我在头文件中包含:
string
如果我加入string.h
或cstring
,则会通过。
知道如何使用string
包含文件吗?迁移代码库以包含string.h
或cstring
不是一个选项
修改的
是的,它是字符串。
可能我应该把它说成第二个选项而不是不是选项
在开始代码迁移之前,我需要排除编译器选项的任何可能性,使其按原样工作。
如果需要,我可以安装额外的库,并改变它的编译方式。实际上并没有编辑代码。
答案 0 :(得分:0)
我在头文件中包含: 刺
的字符串?
任何想法如何使它只使用字符串包含文件?
您可以创建一个虚拟string
文件,并将其与其他标头一起存储。在string
内你可以做例如
#include <string.h>
迁移代码库以包含string.h或cstring不是一个选项
请注意,如果您无法在很小程度上修改代码,则很可能无法将代码移植到6.2。 4.1和6.2相隔 10 年,因此您的代码肯定需要更改/修复才能使用更新的编译器。