不赞成提升精神标题

时间:2009-05-29 06:19:16

标签: c++ boost boost-spirit

我正在关注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 个答案:

答案 0 :(得分:11)

[编辑:]原来的答案严重过时了;特别是链接被打破了。当前版本的Boost(自2012-02-24以来)为1.49.0。

提到的警告是#include <boost/spirit.hpp>的结果,这是一个弃用的标题;但是网上的旧例子使用这种形式。要开始使用,请尝试boost tutorials。一旦看到正确的包含和名称空间,就可以轻松转换大多数旧示例。

[OLD ANSWER:]

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

简而言之,有一种全新的做事方式,这些是要使用的命名空间:

  • boost::spirit:qi(对于解析器)
  • boost::spirit::karma(对于生成器库)

官方发布的版本是1.40,因此可能会更新文档。

编辑:the doc in the boost SVN repository正在开展工作,可能会以更忠实的方式反映新架构。

答案 1 :(得分:1)

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

  

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

答案 2 :(得分:0)

当库指示类/头/方法/等时。不推荐使用,这意味着库的维护者很可能会停止维护功能,并可能在将来删除它。我建议尽早切换到建议的标题,这样可以避免将来的头痛。

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

(我对提升知之甚少,这只是一般性评论)