我正在关注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
答案 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)
当库指示类/头/方法/等时。不推荐使用,这意味着库的维护者很可能会停止维护功能,并可能在将来删除它。我建议尽早切换到建议的标题,这样可以避免将来的头痛。
新标题的处理方式可能略有不同,因此您可能需要进行一些代码更改。
(我对提升知之甚少,这只是一般性评论)