【问题标题】:Problems boost spirit is deprecated问题增强精神已被弃用
【发布时间】:2014-01-29 14:57:12
【问题描述】:

我的语法如下:

#include <boost/spirit.hpp>

struct point_grammar
: public boost::spirit::grammar<point_grammar>
{
   template <typename Scanner>
   struct definition
   {
      boost::spirit::rule<Scanner> E, S, V;

      definition(const point_grammar &self)
      {
         using namespace boost::spirit;
         E = S >> V;
         S = '@' >> +(~ch_p('@') - V);
         V = str_p(".PV@") | str_p(".CV@");
      }

      const boost::spirit::rule<Scanner> &start()
                  {
         return E;
                  }
   };
};

当我编译时,编译器向我显示以下警告:

/usr/include/boost/spirit.hpp:18:4: 警告:“这个标头是 已弃用。请使用:boost/spirit/include/classic.hpp"

但是当更改 boost/spirit/include/classic.hpp 的#include 时,我有以下错误:

(在“

我能做什么?

【问题讨论】:

    标签: boost-spirit


    【解决方案1】:

    应该升级到 Spirit V2。实际上,我在“Problems with grammar”中向您展示了如何做到这一点:)
    说真的。 Boost 1_36 于 2008 年 8 月 14 日发布

    现在,文档 (http://boost-spirit.com/home/doc/) 解释一下

    为避免命名空间与新的 Spirit V2 库发生冲突,我们将 Spirit Classic 移至命名空间 boost::spirit::classic。如上所述更正标头名称后,需要立即调整对前命名空间 boost::spirit 的所有引用。作为替代方案,您可以定义预处理器常量BOOST_SPIRIT_USE_OLD_NAMESPACE,这将强制Spirit Classic 代码像以前一样位于命名空间boost::spirit 中。但不建议这样做,因为它可能会导致命名冲突。

    (来源页面:http://www.boost.org/doc/libs/1_55_0/libs/spirit/doc/html/spirit/what_s_new.html 在“经典”下)

    因此,如果您更新命名空间引用,您可以继续使用相同的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 2023-04-03
      • 2011-05-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多