2009-05-29 62 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 ::精神::經典;