2009-05-29 10 views
6

Estoy siguiendo la guía de inicio rápido para boost :: spirit, y obtengo esta advertencia de compilación cuando incluyo: "Este encabezado está en desuso. Por favor use: boost/spirit/include/classic_core.hpp" Debería estar preocupado por esto?aumentar los encabezados de espíritu obsoleto

(guía de inicio rápido: http://spirit.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)

edición: Además, cuando intento compilar con la classic_core.hpp recomendado y cabeceras classic_push_back_actor.hpp , Obtengo los siguientes errores del 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 
+0

versión de boost? –

+0

lo tienes bien - aumenta 1.39 –

Respuesta

11

[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 un resultado de #include <boost/spirit.hpp> que es un encabezado obsoleto; sin embargo, los ejemplos antiguos en la web usan este formulario. Para comenzar, pruebe el boost tutorials. Una vez que vea los espacios de nombre y de inclusión correctos, la mayoría de los ejemplos antiguos se pueden convertir fácilmente.

[vieja respuesta:]

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 de usar:

  • boost::spirit:qi (para el analizador)
  • boost::spirit::karma (para el generador lib)

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

EDIT: the doc in the boost SVN repository se está trabajando y probablemente refleje la nueva arquitectura de una manera más fiel.

0

Cuando una biblioteca indica que una clase/cabecera/método/etc. está en desuso, significa que el mantenedor de la biblioteca probablemente dejará de mantener la funcionalidad y puede eliminarla en el futuro. Yo recomendaría cambiar al encabezado sugerido más temprano que tarde, así que sálvate de dolores de cabeza en el futuro.

El nuevo encabezado puede tener una forma ligeramente diferente de manejar la característica, por lo que es posible que deba hacer algunos cambios de código.

(no sé mucho acerca de alza, ésta es sólo una observación general)

1

Cuando incluye los encabezados clásicos, los analizadores están en el espacio de nombres boost :: spirit :: classic. Pruebe:

usando namespace boost :: spirit :: classic;