Boost Spirit 头文件已被弃用。

6
我正在按照boost::spirit的快速入门指南操作,当我包含以下内容时,我收到编译器警告:“该头文件已经过时,请使用:boost/spirit/include/classic_core.hpp”。这个警告是否值得担心?
(快速入门指南:http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/quick_start.html,我正在尝试编译的程序的完整源代码在这里:http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/example/fundamental/number_list.cpp
另外,当我尝试使用推荐的classic_core.hpp和classic_push_back_actor.hpp头文件进行编译时,我收到以下编译器错误:
test7.cpp: In function 'bool parse_numbers(const char*, __gnu_debug_def::vector<double, std::allocator<double> >&)':
test7.cpp:18: error: 'real_p' was not declared in this scope
test7.cpp:18: error: 'push_back_a' was not declared in this scope
test7.cpp:23: error: 'space_p' was not declared in this scope
test7.cpp:23: error: 'parse' was not declared in this scope
3个回答

11

[编辑:] 原始答案已经过时,特别是链接已经失效。当前版本的Boost(自2012-02-24以来)为1.49.0。

提到的警告是由于#include <boost/spirit.hpp>这个已弃用的头文件引起的;然而,网络上的旧示例使用这种形式。要开始,请尝试boost教程。一旦您看到正确的包含和命名空间,大多数旧示例可以轻松转换。

[旧答案:]

您必须使用boost 1.39或更高版本(通过SVN)。这个演示应该会有所帮助:

简而言之,有一种全新的做事方式,这些是要使用的命名空间:
  • boost::spirit:qi(用于解析器)
  • boost::spirit::karma(用于生成器库)
官方版本是1.40,所以到那时文档可能会更新。
编辑:在boost SVN存储库中的文档正在进行中,可能更准确地反映了新架构。

1

当您包含经典头文件时,解析器位于boost::spirit::classic命名空间中。请尝试:

using namespace boost::spirit::classic;


0

当一个库指示一个类/头文件/方法等已被弃用时,这意味着该库的维护者很可能会停止维护该功能,并可能在未来删除它。我建议尽早切换到建议的头文件,以免将来出现问题。

新的头文件可能有稍微不同的处理方式,因此您可能需要进行一些代码更改。

(我对boost不是很了解,这只是一般性评论)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接