程序从GCC4.8.5移植到4.4.7平台之后出现了报错,但是看不太懂错误信息。

白马依然 2019-03-01 04:54:07
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algobase.h:66,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/vector:61,
from data_io.h:3,
from data_io.cpp:1:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_pair.h: In instantiation of 'std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>':
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_function.h:482: instantiated from 'std::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool> >'
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/tr1_impl/hashtable_policy.h:790: instantiated from 'std::__detail::_Hash_code_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>, std::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool> >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>'
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/tr1_impl/hashtable:137: instantiated from 'std::_Hashtable<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool> >, std::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool> >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::basic_string<char, std::char_traits<char>, std: :allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>'
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/tr1_impl/unordered_map:48: instantiated from 'std::__unordered_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, std::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool> >, false>'
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/tr1_impl/unordered_map:190: instantiated from 'std::unordered_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, std::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool> > >'
data_io.h:66: instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_pair.h:72: error: 'std::pair<_T1, _T2>::first' has incomplete type
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stringfwd.h:52: error: declaration of 'const struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >'



以上就是部分报错内容,大概能理解是C++的库不兼容,但是不知道如何下手修改。
...全文
294 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
觉非 2019-03-02
  • 打赏
  • 举报
回复
找到报错的头文件路径 对比一下这2个版本的头文件看看能不能有点发现吧
@风轻云淡_ 2019-03-01
  • 打赏
  • 举报
回复
前面一大串都是废话,就看最后两句, error: 'std::pair<_T1, _T2>::first' has incomplete type====意思就是类型不完整,一般出现这种情况就是没有包含对应头文件就使用了该头文件内的类或其他声明。
后面这个error: declaration of 'const struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >'====意思和前面的差不多,应该也是少头文件了。你去百度搜一下 std::pair<_T1, _T2>::first 在哪个头文件里,连通依赖一起安上去,估计会很麻烦。。。。(一般情况下,在高版本编译器平台上写的程序最好别往低版本编译器平台上移植,因为低版本编译器无法向高版本编译器兼容,强行移植,轻则无法正常编译运行,重则出现重大问题。有能力最好重写)

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧