Question

Je suivais le guide de démarrage rapide pour boost :: esprit, et je reçois cet avertissement du compilateur quand je les suivantes: «Cet en-tête est dépréciée S'il vous plaît utiliser: boost / esprit / include / classic_core.hpp » Dois-je être inquiet à ce sujet ?

(guide de démarrage rapide: http: // esprit. sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/quick_start.html , avec la pleine source du programme que je suis en train de compiler ici: http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/example/fundamental/number_list.cpp )

edit: De plus, lorsque je tente de compiler avec les en-têtes de classic_core.hpp et classic_push_back_actor.hpp recommandés, je reçois les erreurs du compilateur suivantes:

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
Était-ce utile?

La solution

[EDIT:] La réponse originale est mal à jour; en particulier, le lien est brisé. La version actuelle de Boost (depuis 2012-02-24) est 1.49.0.

L'avertissement mentionné est le résultat de #include <boost/spirit.hpp> qui est un en-tête obsolète; cependant des exemples anciens sur le web utilisent ce formulaire. Pour commencer, essayez stimuler des tutoriels . Une fois que vous voyez le bon et inclut les espaces de noms, la plupart des anciens exemples peuvent facilement être convertis.

[REPONSE VIEUX:]

Vous devez utiliser boost 1.39 ou version ultérieure (via SVN). Cette présentation devrait aider:

En bref, il y a une toute nouvelle façon de faire chose et ce sont les espaces de noms à utiliser:

  • boost::spirit:qi (pour l'analyseur)
  • boost::spirit::karma (pour le générateur lib)

La version officielle est 1,40 donc probablement à ce moment le doc sera mis à jour.

EDIT: le doc dans le coup de pouce dépôt SVN est en cours d'élaboration et reflète probablement la nouvelle architecture de manière plus fidèle.

Autres conseils

Lorsque vous incluez les en-têtes classiques sont les parseurs dans l'esprit boost :: :: namespace classique. Essayez:

  

en utilisant boost :: namespace esprit :: classique;

Quand une bibliothèque indique qu'une classe / tête / méthode / etc. est désapprouvée, cela signifie que le mainteneur de la bibliothèque sera très probablement cesser de maintenir la fonctionnalité, et peut supprimer à l'avenir. Je recommande de passer à l'en-tête suggéré plus tôt que tard, donc vous épargner des maux de tête à l'avenir.

Le nouvel en-tête peut avoir une manière légèrement différente de la manipulation de la fonction, de sorte que vous devrez peut-être faire quelques changements de code.

(Je ne sais pas beaucoup sur coup de pouce, c'est un commentaire général)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top