GCC7.1编译警告 parameter passing for argument of type ‘std::_Rb_tree...

最近在新的编译器上移植编译代码时,发现出现了一个未曾见过的警告,这套代码在之前其他编译器上是0警告的。

/opt/linux/x86-arm/arm-mix410-linux/arm-linux-gnueabi/include/c++/7.3.0/bits/stl_tree.h:1125:14: note: parameter passing for argument of type ‘std::_Rb_tree<std::__cxx11::basic_string, std::pair<const std::__cxx11::basic_string, _bb808_ftp_task>, std::_Select1st<std::pair<const std::__cxx11::basic_string, _bb808_ftp_task> >, std::less<std::__cxx11::basic_string >, std::allocator<std::pair<const std::__cxx11::basic_string, _bb808_ftp_task> > >::const_iterator {aka std::_Rb_tree_const_iterator<std::pair<const std::__cxx11::basic_string, _bb808_ftp_task> >}’ changed in GCC 7.1
_M_erase_aux(__position);

搜索代码问题所在处,发现是调用 std::map 的成员函数 erase 引起的,搜索资料

https://cloud.tencent.com/developer/ask/sof/1860136/answer/2529414

有人曾提起类似这样的问题,并得到这样的回复

该警告告诉您,在6和7.1之间有一个细微的ABI变化(实际上是一致性修复),因此当从使用7.x构建的代码调用时,
使用6.x或更早版本构建的库可能无法正常工作(反之亦然)。
只要您的所有C++代码都是使用GCC 7.1或更高版本构建的,您就可以放心地忽略此警告。要禁用它,请将-Wno-psabi传递给编译器。

在Makefile中添加编译参数 -Wno-psabi 可以关闭该警告信息。
对本人来说不存在不同编译器编译出来的库互相使用导致的兼容性问题,所以选择忽视该警告信息。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值