将GCC从4.1.2迁移到6.2.0,从RHEL 5.5迁移到CentOS 7.2

时间:2017-01-25 05:43:45

标签: c++ gcc string.h

我有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.hcstring,则会通过。

知道如何使用string包含文件吗?迁移代码库以包含string.hcstring不是一个选项

修改

是的,它是字符串。

可能我应该把它说成第二个选项而不是不是选项

在开始代码迁移之前,我需要排除编译器选项的任何可能性,使其按原样工作。

如果需要,我可以安装额外的库,并改变它的编译方式。实际上并没有编辑代码。

1 个答案:

答案 0 :(得分:0)

  

我在头文件中包含:   刺

的字符串?

  

任何想法如何使它只使用字符串包含文件?

您可以创建一个虚拟string文件,并将其与其他标头一起存储。在string内你可以做例如

#include <string.h>
  

迁移代码库以包含string.h或cstring不是一个选项

请注意,如果您无法在很小程度上修改代码,则很可能无法将代码移植到6.2。 4.1和6.2相隔 10 年,因此您的代码肯定需要更改/修复才能使用更新的编译器。