2009-05-29 43 views
6

我下面的快速入门指南的boost ::精神,当我包括我得到这个编译器警告:“这头已被弃用,请使用:升压/精神/包括/ 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 
+0

升压的版本? – 2009-05-29 06:36:23

回答

11

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

提到的警告是#include <boost/spirit.hpp>结果这是一种不建议使用报头;然而网络上的旧例子使用这种形式。要开始,请尝试boost tutorials。一旦你看到正确的包含和命名空间,大多数旧的例子可以很容易地转换。

[老解答:]

您必须使用升压1.39或更高(通过SVN)。此演示文稿应该有所帮助:

总之,有做事情的一种全新的方式,这些都是在命名空间的使用方法:

  • boost::spirit:qi(解析器)
  • boost::spirit::karma(用于发生器库)

正式版本是1.40,所以到时候文档会被更新。

编辑:the doc in the boost SVN repository正在研发中,可能反映了更忠实地新的架构。

0

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

新标题可能有处理功能的方式略有不同,所以你可能需要做一些代码更改。

(我不知道很多关于提升,这只是一个一般性评论)

1

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

使用空间boost ::精神::经典;