2010-02-26 2 views

Antwort

3

Es gibt einige Fälle, in denen Boost-Bibliotheken genau existieren, weil sie sehr nicht-portable Code wickeln. Die offensichtlichsten Beispiele sind das Dateisystem und das Threading.

Das verräterische Zeichen hierfür ist eine große Verwendung von Boost.Config-Makros. Boost-Code, der nicht von Boost.Config (oder anderen nicht standardmäßigen #ifdefs) abhängig ist, ist sehr portabel.

3

Boost wird mit einigen guidelines zur Programmierung der Portabilität geliefert; Bibliotheken werden vor der Annahme gründlich durchgesehen - obwohl die Compiler-Unterstützung für bestimmte Bibliotheken weggelassen werden kann, wenn es keine vernünftige Möglichkeit gibt, die Bibliotheken Raison d'être zu implementieren, und die Bibliothek Durchbruchkonzepte bringt - zB boost :: mpl didn Ich arbeite lange nicht gut auf Sun Compilern.

Also, ja, Sie können nur die Quellen der Bibliotheken konsultieren - aber erwarten, dass ein großer Kopfschmerz, portable Codierung erfordert Ebenen auf Ebenen der Indirektion.

+0

@Hassan: Nur zu wissen - war 'mpl' nun gut, weil der Compiler dem Standard nicht genau folgte oder wurde der Code nicht streng nach C++ 03 geschrieben? Grund ist, dass ich nicht verstehen konnte, warum ein Code nicht richtig laufen würde, wenn er dem Standard folgt und derselbe Zweifel auch bei Compilern. – legends2k

+0

Ich kenne die genauen Details nicht, obwohl es bei neueren Compilern funktioniert. –

+0

Hmm. Diese Richtlinien erfordern nicht, dass der Code bei allen konformen Compilern funktioniert, und erfordern nicht, dass der Code bei einem nicht-konformen Compiler funktioniert. Das ist nicht ganz das, was normalerweise gemeint ist, wenn Leute sagen: "Ist dieser Code tragbar?", Obwohl ich den Pragmatismus von Boosts Ansatz sehe - eine Implementierung von experimentellen Bibliotheken akzeptieren, wenn sie Portabilität verspricht, und herausfinden, wie sie später portiert werden kann. In der Praxis ist ein stabiler Boost-Code viel "besser" als in den Richtlinien angegeben. –

4

Boost-prety gut gegen eine Vielzahl von Betriebssystemen getestet

Check out this page

+0

Es ist gut, danke für den Link. Obwohl ich erwähnen sollte, dass nur Desktop/Server-Plattformen dort getestet/aufgelistet sind. Ich habe 'boost :: shared_ptr' in * Windows Mobile * verwendet, das einwandfrei lief. Da alles in der Kopfzeile geschrieben ist, habe ich nicht einmal Boost kompiliert. Ein Test mit einem großen Spektrum sollte also besser helfen. – legends2k

Verwandte Themen