質問

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> これは非推奨のヘッダーです。ただし、Web 上の古い例ではこの形式が使用されています。まず始めに、次のことを試してください。 ブーストチュートリアル. 。正しいインクルードと名前空間が表示されれば、ほとんどの古い例は簡単に変換できます。

[古い答え:]

boost 1.39 以降 (SVN 経由) を使用する必要があります。このプレゼンテーションは次の点に役立ちます。

つまり、まったく新しい方法があり、使用する名前空間は次のとおりです。

  • boost::spirit:qi (パーサー用)
  • boost::spirit::karma (ジェネレーターライブラリ用)

公式リリースは 1.40 なので、おそらくその時までにドキュメントが更新されるでしょう。

編集: Boost SVN リポジトリ内のドキュメント は現在開発中であり、おそらく新しいアーキテクチャをより忠実に反映していると思われます。

他のヒント

あなたはパーサはブースト::精神::古典的な名前空間にある古典的なヘッダを含めているとき。試してみてください。

  

を使用して名前空間boost ::精神::古典;

ライブラリがクラス/ヘッダー/メソッドなどを示している場合。が非推奨であるということは、ライブラリの保守者が機能の保守を停止する可能性が高く、将来的には削除される可能性があることを意味します。今後の頭痛の種を避けるために、遅かれ早かれ推奨されるヘッダーに切り替えることをお勧めします。

新しいヘッダーでは機能の処理方法が若干異なる場合があるため、コードの変更が必要になる場合があります。

(ブーストについてはあまり詳しくありません。これは単なる一般的なコメントです)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top