Pergunta

Eu estou seguindo o guia de início rápido para boost :: espírito, e eu recebo este aviso do compilador quando eu incluem: "Este cabeçalho é obsoleto Utilize: boost / espírito / include / classic_core.hpp" Eu deveria estar preocupado com isso ?

(guia de início rápido: http: // espírito. sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/quick_start.html , com plena fonte do programa que eu estou tentando compilar aqui: http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/example/fundamental/number_list.cpp )

edit: Além disso, quando eu tento compilar com as classic_core.hpp e classic_push_back_actor.hpp cabeçalhos recomendados, recebo os erros seguinte compilador:

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
Foi útil?

Solução

[EDIT:] A resposta original está mal fora de data; em particular, a ligação é interrompida. A versão atual do impulso (desde 2012-02-24) é 1.49.0.

O aviso mencionado é um resultado de #include <boost/spirit.hpp> que é um cabeçalho preterido; no entanto exemplos antigos na web utilizar este formulário. Para começar, tente o impulsionar tutoriais . Depois de ver a correta inclui e namespaces, exemplos mais antigos podem ser facilmente convertidos.

[velha resposta:]

Você deve estar usando boost 1.39 ou posterior (via SVN). Esta apresentação deve ajudar:

Em suma, há uma nova maneira de fazer as coisas e estes são os namespaces para uso:

  • boost::spirit:qi (para o analisador)
  • boost::spirit::karma (para o lib gerador)

O lançamento oficial é de 1,40, portanto, provavelmente por esse tempo o doc será atualizado.

EDIT: o doc no impulso SVN repositório está sendo trabalhado e, provavelmente, reflete a nova arquitetura de uma maneira mais fiel.

Outras dicas

Quando você está incluindo os cabeçalhos clássicos os analisadores estão no boost :: espírito :: namespace clássico. Tente:

usando boost :: namespace espírito :: clássico;

Quando uma biblioteca indica que uma classe / header / método / etc. está obsoleto, isso significa que o mantenedor da biblioteca provavelmente irá parar de manter a funcionalidade, e pode removê-lo no futuro. Eu recomendaria para mudar para o cabeçalho sugeriu mais cedo do que mais tarde, então salvar-se de dores de cabeça no futuro.

O novo cabeçalho pode ter uma maneira ligeiramente diferente de lidar com o recurso, então você pode precisar fazer algumas alterações no código.

(Eu não sei muito sobre impulso, este é apenas um comentário geral)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top