Frage

Ich bin nach der Schnellstartanleitung für boost :: Geist, und ich erhalte diese Compiler-Warnung, wenn ich schließen ein: „Dieser Header ist veraltet Bitte verwenden: boost / Geist / include / classic_core.hpp“ Soll ich darüber besorgt sein ?

(Schnellstartanleitung: http: // Geist. sourceforge.net/distrib/spirit_1_8_5/libs/spirit/doc/quick_start.html , mit voller Quelle des Programms ich hier zu kompilieren versuchen: http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/example/fundamental/number_list.cpp )

edit: Außerdem, wenn ich versuche, mit dem empfohlenen classic_core.hpp und classic_push_back_actor.hpp Header zu kompilieren, erhalte ich den folgenden Compiler-Fehler:

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
War es hilfreich?

Lösung

[EDIT:] Die ursprüngliche Antwort ist schlecht veraltet; Insbesondere ist die Verbindung unterbrochen. Die aktuelle Version von Boost (seit 2012-02-24) ist 1.49.0.

Die Warnung erwähnt ist ein Ergebnis der #include <boost/spirit.hpp>, die ein veraltetes Header ist; jedoch alte Beispiele auf dem Netz dieses Formular. Um loszulegen, versuchen die steigern Tutorials . Sobald Sie die richtige sehen enthält und Namespaces, die meisten alten Beispiele leicht umgewandelt werden kann.

[ALTE ANTWORT:]

Sie müssen mit boost 1.39 oder höher (via SVN). Diese Präsentation soll helfen:

Kurz gesagt, es ist eine völlig neue Art und Weise, was zu tun, und dies sind die Namespaces zu verwenden:

  • boost::spirit:qi (für den Parser)
  • boost::spirit::karma (für den Generator lib)

Die offizielle Veröffentlichung ist 1,40 so wahrscheinlich bis zu diesem Zeitpunkt wird die doc aktualisiert werden.

EDIT: doc im Boost SVN-Repository wird gearbeitet und wahrscheinlich die neue Architektur in getreuer Weise widerspiegelt.

Andere Tipps

Wenn Sie mit den klassischen Header der Parser im Boost ist :: spirit :: klassische Namespace. Versuchen Sie:

  

using namespace boost :: spirit :: klassisch;

Wenn eine Bibliothek gibt an, dass eine Klasse / Header / Verfahren / etc. veraltet ist, bedeutet dies, dass der Maintainer der Bibliothek wird höchstwahrscheinlich die Funktionalität stoppen beibehalten, und es in der Zukunft entfernen. Ich würde empfehlen, auf den vorgeschlagenen Kopf wechseln eher früher als später, so um sie von Kopfschmerzen in der Zukunft zu retten.

Der neue Header eine etwas andere Art und Weise der Handhabung der Funktion haben kann, so müssen Sie möglicherweise einige Code-Änderungen vornehmen.

(Ich weiß nicht viel über die Boost, das ist nur eine allgemeine Bemerkung)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top