2010-02-26 8 views

Respuesta

3

Hay algunos casos en los que existen bibliotecas Boost precisamente porque envuelven muy no portátil código. Los ejemplos más obvios son el sistema de archivos y el enhebrado.

El signo revelador de esto es un gran uso de las macros Boost.Config. El código de Boost que no depende de Boost.Config (u otros #ifdefs no estándar) será altamente portable.

3

Boost viene con algunos guidelines sobre cómo programar la portabilidad; las bibliotecas se revisan exhaustivamente antes de su aceptación, aunque se puede eliminar el soporte del compilador para bibliotecas particulares si no existe una forma razonable de implementar las bibliotecas Raison d'être, y la biblioteca ofrece conceptos innovadores, por ejemplo, boost :: mpl didn No funciona bien en los compiladores de sol durante mucho tiempo.

Entonces, sí, puede consultar las fuentes de las bibliotecas, sin embargo, se espera un gran dolor de cabeza, la codificación portátil requiere niveles y niveles de indirección.

+0

@Hassan: Solo para saber, ¿estaba 'mpl' funcionando bien debido a que el compilador no seguía estrictamente el estándar o el código no estaba escrito siguiendo estrictamente el C++ 03? La razón por la que soy curioso es que no pude entender por qué un código no funcionaría correctamente cuando sigue el estándar y la misma duda con los compiladores también. – legends2k

+0

No conozco los detalles precisos, aunque funciona en compiladores recientes. –

+0

Hmm. Esas directrices no requieren que el código funcione en todos los compiladores conformes, y no requieren que el código funcione en ningún compilador no conforme. Eso no es exactamente lo que normalmente se quiere decir cuando la gente dice: "¿este código es portátil?", Aunque veo el pragmatismo del enfoque de Boost: aceptar una implementación de bibliotecas experimentales si promete portabilidad y averiguar cómo portarlo más adelante. En la práctica, el código de Boost estable es mucho "mejor" de lo que especifican las pautas. –

4

Boost está prety bien probado contra una variedad de sistemas operativos

Salida this page

+0

Está bien, gracias por el enlace. Aunque, debo mencionar que solo las plataformas de escritorio/servidor se prueban/enumeran allí. He usado 'boost :: shared_ptr' en * Windows Mobile * que funcionó impecablemente. Como todo está escrito en el encabezado, ni siquiera compilé boost. Entonces, una prueba que cubra un amplio espectro debería ayudar mejor. – legends2k

Cuestiones relacionadas