Вопрос

Я следую руководству по быстрому запуску для 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-02-24) - 1.49.0.

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

[СТАРЫЙ ОТВЕТ:]

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

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

  • boost::spirit:qi (для синтаксического анализатора)
  • boost::spirit::karma (для библиотеки генератора)

Официальная версия - 1.40, так что, вероятно, к тому времени документ будет обновлен.

Редактировать: документ в репозитории boost SVN над ним ведется работа, и, вероятно, он более точно отражает новую архитектуру.

Другие советы

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

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

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

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

(Я мало что знаю о boost, это всего лишь общий комментарий)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top