2008-10-14 10 views
31

Solo porque tengo curiosidad: ¿hay algún análogo en C para la funcionalidad del STL en C++? He visto mencionar una biblioteca GTK+ llamada glib que algunas personas consideran que llena la factura, pero ¿hay otras bibliotecas que proporcionen la funcionalidad STL en C?C Analógico a STL

+1

¿Por qué? El 99% del tiempo puede convertir código C bien escrito en código C++ simplemente cambiando la configuración del compilador. ¿Por qué no comenzar a usar el código C++? – davr

+0

@davr, estoy usando el código C++. Solo tenía curiosidad sobre la posibilidad de algo como el STL (y sus estructuras de datos) en C. Sigo diciéndole a la gente que usa C++ que deje de usar matrices: en su lugar, use . Así que tenía curiosidad por si había algo más seguro en C. –

+5

@davr Esta pregunta es bastante útil para las personas que escriben código para sistemas integrados que solo ofrecen compiladores de C. Si podemos hacer la programación de estilo C++ en C, podemos tener la funcionalidad C++ en una gran variedad de procesadores integrados. – solvingPuzzles

Respuesta

28

Sí, glib es una muy buena opción: incluye muchas utilidades para manipular contenedores como listas enlazadas, matrices, tablas hash, etc. Y también hay un marco orientado a objetos llamado GObject que puede usar para hacer objetos con señales y ranuras en C (aunque con nombres de llamada de función bastante detallada como gobject_set_property, ya que C no tiene ninguna sintaxis para los objetos). Y también hay un código para los bucles principales para que pueda escribir programas impulsados ​​por eventos.

Más información de Wikipedia: http://en.wikipedia.org/wiki/Glib

Glib fue originalmente parte de GTK, pero el código no GUI ha sido completamente factor fuera para que pueda utilizarlo en programas de línea de comandos: http://library.gnome.org/devel/glib/stable/

+9

Omg, me encanta C .. –

2

Bueno, dado que la naturaleza de STL se basa en plantillas que C no tiene, sería difícil incluso acercarse al STL en C. Lo mejor que podría esperar es algunas clases de colección que manipulan punteros void * para objeto desconocido

+0

@James Curran, estaba pidiendo un _analog_ a la STL. Me doy cuenta de que las plantillas son una característica de C++. –

+2

STL es mucho más que una biblioteca de contenedores. –

+1

Soy consciente de que STL es más que una biblioteca de contenedores, por lo que dije "Lo mejor que puedes esperar" –