2009-05-29 3 views
6

Я следую руководству quickstart для boost :: spirit, и я получаю это предупреждение компилятора, когда включаю: «Этот заголовок устарел. Используйте: boost/spirit/include/classic_core.hpp« Должен ли я беспокоиться об этом?boost head заголовки устарели

(Краткое руководство: 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

+0

у вас все получилось - boost 1.39 –

ответ

11

[EDIT:] Оригинальный ответ сильно устарел; в частности, связь нарушена. Текущая версия Boost (с 2012 по 2012 год) - 1.49.0.

Указанное предупреждение является результатом #include <boost/spirit.hpp>, который является устаревшим заголовком; однако старые примеры в Интернете используют эту форму. Чтобы начать работу, попробуйте boost tutorials. Когда вы увидите правильные включения и пространства имен, большинство старых примеров могут быть легко преобразованы.

[OLD ОТВЕТ:]

Вы должны использовать импульс 1.39 или более поздней (через SVN). Эта презентация поможет:

Короче говоря, есть совершенно новый способ делать вещи, и эти пространства имен использовать:

  • boost::spirit:qi (парсер)
  • boost::spirit::karma (для генератора lib)

Официальный релиз 1,40, поэтому, вероятно, к тому времени документ будет обновлен.

EDIT: the doc in the boost SVN repository работает и, вероятно, отражает новую архитектуру более точно.

0

Когда библиотека указывает, что класс/header/method/etc. устарел, это означает, что хранитель библиотеки, скорее всего, перестанет поддерживать функциональность и может удалить ее в будущем. Я бы рекомендовал переключиться на предлагаемый заголовок раньше, чем позже, поэтому избавьтесь от головных болей в будущем.

Новый заголовок может иметь несколько иной способ обработки этой функции, поэтому вам может потребоваться внести некоторые изменения в код.

(я много об импульсе не знаю, это просто замечание общего)

1

Когда вы включаете классические заголовки, парсеры находятся в boost :: spirit :: classic namespace. Попробуйте:

использование пространства имен boost :: spirit :: classic;

Смежные вопросы