2008-11-17 9 views
19

Tengo un par de proyectos de programación de la afición C que me gustaría comenzar. Estoy buscando una biblioteca de código abierto que tenga una licencia liberal (quiero crédito, pero prácticamente cualquiera puede usarlo). La biblioteca necesita tener cadenas mejor que la biblioteca estándar C y algunas primitivas de subprocesamiento portátiles.GLib v APR pros y contras de cada

Estoy pensando en GLib y APR. ¿Cuál es tu experiencia práctica? ¿Cuál es la mejor biblioteca de C fundamental? ¿Hay otras bibliotecas llenando el mismo nicho?

Respuesta

12

Creo que glib es generalmente superior a apr. glib tiene muchas más estructuras de datos como bibliotecas portátiles. por ejemplo, tablas hash, todo tipo de listas, colas, pilas, matriz dinámica, también para el análisis de argumentos, el archivo tiene sus propios contenedores y la administración de la memoria es fácil de modificar. Por ejemplo, puede hacer fácilmente que el uso del Boehm Weisser GC sea AFAIKT, nunca se ha hecho o es posible con Apache. Yo decidiría un poco diferente. Si necesita una biblioteca de estructuras de datos más útil, glib está mejor equipado. Si se trata de cosas de GUI, libapr no tiene nada, mientras que glib tiene gdk/gtk + y muchas cosas para gnome si se quiere.

Sin embargo, si se trata de cosas de red, libapr definitivamente tiene una ventaja sobre glib.

Así que mi sugerencia es

  • escritorio programación: El uso de GTK + y simplista.
  • Cosas de la red: Use apr, pero tenga por seguro que glib también tiene todo este material portátil.
7

Iría con APR. APR es mejor en portabilidad Unix/Windows (siendo una biblioteca de portabilidad dedicada), GLib ha sido tradicionalmente más orientado a Unix. APR es una biblioteca más grande que GLib, con muchas cosas útiles (tablas hash, análisis de argumentos, archivos de E/S, administración de memoria, rutinas de memoria compartida, manejo de señales, etc.).

+1

Por cierto, ahora glib incluye gio que es E/S portátil con una arquitectura orientada a la transmisión. No creo que apr sea tan grande como para nada glib. – lethalman

+2

Entonces, ¿cómo es hoy? ¿Cuál es más grande? ¿Y esta respuesta sigue siendo válida? – einpoklum

+0

Las cosas libapr son mucho menos que las cosas glib/gtk. No hay dudas sobre eso ... – Friedrich

1

¿Hay algún motivo por el que no desee utilizar C++ stl? Incluso si escribe código "c-style" sin clases, puede usar cadenas de C++ y estructura de datos.

Hay muchas razones válidas para apegarse a C, por supuesto. Si ese es el caso, apoyaría la recomendación de glib. APR es más una capa de portabilidad que una biblioteca de utilidad.

+1

Hablando de cadenas de C++, le recomendaría que lea lo que Linus dice al respecto: http://thread.gmane.org/gmane.comp.version-control.git/57918 –

+1

Sí, Estoy de acuerdo en que Linus tomó la decisión correcta de usar una C recta para git. Use lo que sea apropiado para su proyecto y la audiencia de desarrolladores objetivo. Las cadenas de C++ son agradables, especialmente para un programador "aficionado" como el cartel indicado, porque no tiene que rastrear la propiedad y averiguar cuándo liberarlas (y), y el crecimiento automático lo hace para que no lo haga tiene que preocuparse por casos difíciles de strcat. Por supuesto, como dije, "Hay muchas razones válidas para apegarse a C ..." también. Usa lo que funciona para ti – joeld

+1

La pregunta era específicamente sobre la codificación en C, por lo que C++ STL no es relevante. (Sí, sé que este comentario es 5 años después del hecho. Muchacho, estas preguntas y respuestas seguro duran, ¿no?) – einpoklum