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
4

3 回答 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 存储库中的文档正在处理中,可能以更忠实的方式反映新架构。

于 2009-05-29T06:33:42.583 回答
1

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

使用命名空间 boost::spirit::classic;

于 2009-05-29T12:36:01.823 回答
0

当一个库指示一个类/标题/方法/等时。已弃用,这意味着库的维护者很可能会停止维护该功能,并可能在将来将其删除。我建议尽早切换到建议的标题,这样可以避免将来头疼。

新标头处理功能的方式可能略有不同,因此您可能需要进行一些代码更改。

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

于 2009-05-29T06:26:34.700 回答