我正在遵循 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
有帮助吗?

解决方案

[编辑:]原来的答案已经严重过时了;特别是链接已损坏。Boost 的当前版本(自 2012 年 2 月 24 日起)为 1.49.0。

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

[旧答案:]

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

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

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

官方版本是 1.40,所以到那时文档可能会更新。

编辑: boost SVN 存储库中的文档 正在开发中,可能会以更忠实的方式反映新的架构。

其他提示

当你包括经典的标头中的解析器中的boost ::精神::经典的命名空间。尝试:

  

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

当一个库指示类/报头/方法/等。已被弃用,这意味着库的维护者将最有可能停止保持功能,并且可能在未来将其删除。我建议切换到建议的标题迟早,所以从头痛保存自己的未来。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top