【发布时间】: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.hpp和template_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