MinGW 和 Boost C++ 1.54.0 警告

Posted

技术标签:

【中文标题】MinGW 和 Boost C++ 1.54.0 警告【英文标题】:MinGW and Boost C++ 1.54.0 warnings 【发布时间】:2013-07-05 17:26:47 【问题描述】:

我通常在构建时将警告视为错误。我正在使用 Boost C++ 1.54.0 和 MinGW 4.8.1,特别是我正在使用 ptree。

#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
using namespace std;

int main() 
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;

这个简单的程序会导致以下错误:

typedef 'cons_element' locally defined but not used [-Wunused-local-typedefs] line 228, external location: \boost\tuple\detail\tuple_basic.hpp  
typedef 'Str' locally defined but not used [-Wunused-local-typedefs] line 38, external location: \boost\property_tree\detail\xml_parser_write.hpp
typedef 'Str' locally defined but not used [-Wunused-local-typedefs] line 72, external location: \boost\property_tree\detail\xml_parser_write.hpp
typedef 'T_must_be_placeholder' locally defined but not used [-Wunused-local-typedefs]      line 37, external location: \boost\bind\arg.hpp

有没有办法忽略这个警告?

【问题讨论】:

那是因为你有 -Wunused-local-typedefs 编译选项,只需删除它,一切都很好! 我一直使用 -Wall 构建,不幸的是 gcc 不允许选择警告。 问题似乎是在开机,尝试在没有-Wall的情况下编译,看看结果!你也可以使用-Wno-unused-local-typedefs我不确定它是否有效! 【参考方案1】:

gcc 从 4.6 开始允许忽略特定警告

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
...
...
#pragma GCC diagnostic pop

仍有一些警告无法通过这种方式关闭,但它适用于大多数人

或者像其他提到的那样做,并将 -Wno-unused-local-typedefs 添加到命令行

【讨论】:

以上是关于MinGW 和 Boost C++ 1.54.0 警告的主要内容,如果未能解决你的问题,请参考以下文章

将 Boost 库包含到标准 MinGW 路径中

代码块、MinGW、Boost 和静态链接问题

Boost Subgraph Copy Constructor 不适用于 Qt 5.0.2 和 MinGW

使用 mingw-w64 编译 boost

如何使用 MinGW 构建 Boost 1.55?

在 windows 和 mingw 上加速安装