Pregunta

Estoy siguiendo la guía de inicio rápido para el impulso :: espíritu, y me sale esta advertencia del compilador cuando se incluyo: "Esta cabecera está en desuso por favor use: realce / espíritu / include / classic_core.hpp" ¿Debo estar preocupado por este ?

(guía de inicio rápido: http: // espíritu. sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/quick_start.html , con plena fuente del programa que estoy tratando de recopilar aquí: http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/example/fundamental/number_list.cpp )

Edit: Además, cuando intento compilar con las cabeceras classic_core.hpp y classic_push_back_actor.hpp recomendadas, consigo los siguientes errores de compilación:

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
¿Fue útil?

Solución

[EDIT:] La respuesta original es muy fuera de fecha; en particular, el enlace está roto. La versión actual de Boost (desde 2012-02-24) es 1.49.0.

La advertencia mencionada es el resultado de #include <boost/spirit.hpp> que es una cabecera en desuso; Sin embargo antiguos ejemplos en la web utilizan este formulario. Para empezar, probar el impulsar tutoriales . Una vez que vea la correcta incluye y espacios de nombres, la mayoría de los ejemplos antiguos se pueden convertir fácilmente.

[RESPUESTA OLD:]

Debe utilizar impulso 1.39 o posterior (a través de SVN). Esta presentación debe ayudar:

En resumen, hay una nueva manera de hacer las cosas y estos son los espacios de nombres a utilizar:

  • boost::spirit:qi (por el analizador sintáctico)
  • boost::spirit::karma (para el lib generador)

El lanzamiento oficial es de 1,40 por lo que probablemente en ese momento se actualizará el documento.

EDIT: el documento en el impulso repositorio SVN se está trabajando y probablemente refleja la nueva arquitectura de una manera más fiel.

Otros consejos

Cuando se está incluyendo las cabeceras clásicas de los analizadores están en el espíritu impulso :: :: espacio de nombres clásico. Proveedores:

  

using namespace impulso :: :: espíritu clásico;

Cuando una biblioteca indica que una clase / cabecera / método / etc. está en desuso, significa que el mantenedor de la biblioteca lo más probable es dejar de mantener la funcionalidad, y puede eliminar en el futuro. Yo recomendaría para cambiar a la cabecera sugerido más pronto que tarde, por lo que se ahorrará de dolores de cabeza en el futuro.

La nueva cabecera puede tener una forma ligeramente diferente de manejar la función, por lo que es posible que tenga que hacer algunos cambios en el código.

(No sé mucho acerca de impulso, esto es sólo una observación general)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top