2011-02-14 15 views
7

C++ tiene STL y Boost y C# tiene la biblioteca .NET Framework. Del mismo modo, ¿cuáles son las bibliotecas más comunes útiles para un programador C? (Aparte de la biblioteca estándar C)¿Cuáles son las bibliotecas comunes para C?

Estoy buscando la mayoría de las capacidades disponibles en el STL: contenedores (vectores, listas vinculadas, árboles, tabla hash), algoritmos (clasificación, búsqueda), archivo IO y cadenas .

Idealmente, la biblioteca debe ser de código abierto, funcionar en Windows (multiplataforma está bien) y se está utilizando activamente.

+1

http://directory.fsf.org/category/clibs/ –

+1

Para estructuras de datos: http://stackoverflow.com/questions/1819416/standard-data-structure-library-in-c –

+1

y http://stackoverflow.com/questions/4016383/c-data-structure-library –

Respuesta

1

Sí. GLib es lo más parecido a STL en C. Si le resulta bastante complejo de usar, pruebe Vala. Es mucho mas facil http://live.gnome.org/Vala

+0

Vala se ve bastante ordenada, se ve básicamente como escribir C# pero compilando en código C nativo/binario, aunque no creo que deba aplicarse a esta pregunta. – Earlz

5

Si desea estructuras de datos de propósito general como STL has, glib es probablemente la respuesta a su pregunta. Pero una pregunta mejor podría ser ¿por qué estás escribiendo tu programa en C? El potencial de C para brillar se produce cuando no se utiliza un código excesivamente general para realizar tareas que se podrían realizar mejor de forma específica para su tarea particular en cuestión. glib simplemente le da "C++ con sintaxis fea" (y menos capacidad para que el compilador optimice).

+0

Para un marco tan grande glib y gtk están bien hechos. No me gustaría tener otro dialecto C++ para eso. Y C++ como "tener" una buena sintaxis es muy aventurero. – Friedrich

+2

No soy partidario de C++ ni de su sintaxis, pero tampoco soy partidario de intentar que C a C++ funcione igual. La mayor parte de la ventaja de C proviene del hecho de que puede evitar la asignación dinámica completamente para operaciones intermedias y solo asignar objetos de larga duración. –

+0

Gran respuesta como de costumbre –

Cuestiones relacionadas