¿Cómo aprender a programar bibliotecas en C? ¿Cuáles son algunos buenos libros para esto?

Bueno, depende del tipo de bibliotecas que quieras decir.

Comenzaremos con las bibliotecas de origen, bibliotecas de las cuales tiene la fuente. En ese caso, simplemente los codifica dentro de su proyecto como el resto de la aplicación, pero puedo darle algunas sugerencias.

Primero: recuerde poner en los encabezados solo las funciones y las constantes que necesita exportar a otras partes del código. En la implementación, recuerde declarar estáticas todas las cosas que no desea exportar. Los usuarios de su biblioteca solo deben saber lo que necesitan, no más. Además, recuerde agregar en los encabezados el truco para evitar incluir bucles con las directivas #define y #ifndef, esto evitará que su compilador se vuelva loco.

Si no los conoce, vea aquí incluir guardia – Wikipedia

Si desea ser realmente inteligente, también puede usar el concepto de ADT en sus bibliotecas, por ejemplo, FILE devuelto por fopen es un ADT.

Aprendí cómo implementar ADT correctamente en C de un libro que no recuerdo ahora, editaré lo antes posible.

Estos son trucos generales, para aprender bien debe observar cuidadosamente la fuente de una biblioteca bien escrita, como por ejemplo una implementación de la biblioteca estándar de C. Creo que ningún libro puede darte un mejor consejo que ese.

Ahora tenemos básicamente otros 2 tipos de biblioteca:

Bibliotecas enlazadas estáticas:

El código compilado de su biblioteca debe estar vinculado al código compilado de su aplicación. Lo que significa que tienes que instruir a tu aficionado para que haga eso.

Debe compilar sus bibliotecas por separado de su aplicación y luego vincularlas entre sí, ya sea a través del terminal o su ide.

Bibliotecas vinculadas dinámicas (. Dll en win, .so en SO unix):

Debe compilar bibliotecas por separado y luego indicarle a su sistema dónde encontrarlas. Se vincularán durante la ejecución.

Este tipo de bibliotecas tiene muchas ventajas, pero no son adecuadas para proyectos pequeños.

Te di algunas pistas, ahora deberías buscar en la web tutoriales detallados.

Espero que haya ayudado

Programar una “biblioteca” en realidad no es diferente de escribir un programa regular, excepto que no hay una función “main ()”.

Por lo general, escribirá un montón de funciones ‘extern’, tal vez expondrá algunas variables globales (también usando ‘extern’) y colocará las declaraciones de esas cosas en un archivo de encabezado.

Los pasos exactos para indicarle a su compilador que cree una “biblioteca” (un “.lib” o “.dll” en Windows, o un “.a” o “.lib” en Linux) son específicos de cualquier sistema de compilación que esté utilizando. utilizando.

Pero en general, creará un montón de archivos “.obj” (Windows) o “.o” (Linux) y ejecutará algún comando para recopilarlos en “.lib” / “. Dll” / “. A” formato. Ese archivo, más (idealmente) un único archivo de encabezado, son las únicas cosas que necesita dar a otros programadores para que puedan usar su biblioteca.

Una biblioteca es una colección de funciones que ha escrito, no son diferentes de las mismas funciones escritas como parte del programa, por lo que utiliza los mismos libros para aprender a escribir bibliotecas de C que aprendería a escribir C programas

AddEntry vacío (int r, int largo p)
{
/ * hacer algunas cosas para agregar una entrada * /
}

int DeleteEntry (int r, long int p)
{
/ * hacer algunas cosas para eliminar una entrada * /
if (del_found_flag == 0) / * el indicador es 0 cuando se encontró la entrada de entrada de eliminación * /
{return (0); } / * retorno exitoso * /
más
{return (-1); } / * retorno no encontrado * /
}

Compile ese archivo y vincúlelo a su programa y tendrá una biblioteca para agregar y eliminar entradas (a / de lo que sea).