【问题标题】:deprecated warnings while using boost.spirit使用 boost.spirit 时不推荐使用的警告
【发布时间】:2016-09-19 06:20:30
【问题描述】:

我正在尝试使用 boost.spirit.qi 编写一些解析器,但是当我编译时,我收到以下已弃用的警告:

In file included from /usr/include/boost/iostreams/detail/is_dereferenceable.hpp:12:0 ... 

#pragma message: NOTE: Use of this header (bool_trait_def.hpp) is deprecated

#pragma message: NOTE: Use of this header (template_arity_spec.hpp) is deprecated

我使用了错误的解析器还是旧的东西?我怎样才能摆脱这些警告?

编辑:/usr/include/boost/iostreams/detail/is_dereferenceable.hpp 以某种方式包含在 /usr/include/boost/spirit/include/qi.hpp 中 我正在使用 Boost 版本 1.61

【问题讨论】:

  • 我也有同样的警告。他们很烦人。我希望它们会在 boost 1.61 中消失。也许你应该在邮件列表/boost trac/github repo 上报告它们以提升精神
  • 真正的罪魁祸首是Spirit内部使用的Boost.Iostream。从 Boost 1.61 开始,Boost.Iostream 仍在使用 Boost.TypeTraits 已弃用的头文件(bool_trait_def.hpptemplate_arity_spec.hpp)。此问题在Ticket #11886 报告。
  • 对于班次,您可以通过指定 GCC(或 Clang)命令行选项 -isystem /usr/include 将 Boost 头文件所在的 /usr/include 标记为系统目录。除#warning 生成的警告外,系统目录中的头文件的所有警告均被抑制。详情请参阅The C Preprocessor
  • @dkim 这当然不能为我解决问题; #pragma message() 显然也是豁免的。我知道,因为我一直在使用-isystem
  • @sehe 我再次检查了权宜之计是否适用于 Clang(包含在 Xcode 7.3.1 中)。 GCC 的 -isystem 似乎与 Clang 的工作方式不同。很高兴知道。谢谢!

标签: c++ boost boost-spirit boost-spirit-qi


【解决方案1】:

我在使用 boost 几何包时遇到了类似的问题,无法升级 boost 来修复错误。

使用以下定义禁用增强不推荐使用的警告:

#define BOOST_ALLOW_DEPRECATED_HEADERS
#define BOOST_BIND_GLOBAL_PLACEHOLDERS

请注意,第二个定义处理与弃用警告一起出现的常见警告,可能不需要。

【讨论】:

    猜你喜欢
    • 2020-01-31
    • 2015-02-26
    • 2020-05-14
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2020-02-23
    • 2019-09-21
    • 2017-03-01
    相关资源
    最近更新 更多