删除 GCC ABI 更改的注释

Posted

技术标签:

【中文标题】删除 GCC ABI 更改的注释【英文标题】:Remove note of GCC ABI change 【发布时间】:2012-12-17 12:01:41 【问题描述】:

当我使用 GCC 4.7 编译我的程序时,我得到以下注释:

/usr/include/c++/4.7/backward/binders.h:167:5: note: the ABI of passing structure with complex float member has changed in GCC 4.4 here

有什么办法可以摆脱吗?我试图用谷歌搜索它,但我发现的只是打印注释字符串的 GCC 源代码行。

【问题讨论】:

【参考方案1】:

将选项 -Wno-psabi 传递给 GCC。

【讨论】:

【参考方案2】:

我收到了同样的信息:

/usr/include/c++/4.8.3/bits/stl_pair.h:276:5: note: the ABI of passing structure with complex float member has changed in GCC 4.4

对于以下代码行:

indices.push_back(make_pair(centreIndex,centre));

其中 centerIndex 是一个整数,而 center 是一个复数浮点数。

为了摆脱错误消息,我将代码更改为:

indices.push_back(pair<int,complex<float> >(centreIndex,centre));

我认为这是一种更好的方法,因为 make_pair 只是这种更直接的创建对的方法的包装。

【讨论】:

以上是关于删除 GCC ABI 更改的注释的主要内容,如果未能解决你的问题,请参考以下文章

如何使用旧 ABI 编译 GCC 5 的 boost?

为啥只有注释更改的两个程序二进制文件在 gcc 中不完全匹配?

更改gcc g++版本

c++ 项目仍然需要 -D_GLIBCXX_USE_CXX11_ABI=0

Linux基础开发工具使用(yum,vim,gcc/g++,gdb,make,git)

带有 abi:cxx11 的 GCC 未定义引用