Las librer\u00edas en C y C++ <\/a>son archivos o bloques de c\u00f3digo con funciones especiales que podemos incluir en nuestro c\u00f3digo importando sus funcionalidades. Muchas de las librer\u00edas que vamos a estar utilizando van a ser librer\u00edas que vienen por defecto en el compilador de C y C++. Las librer\u00edas est\u00e1ndar por ejemplo, \u201cstdlib.h\u201d<\/a><\/b> y \u201cstdio.h\u201d<\/a>, que importan funciones y tipos de datos especiales, comunicaci\u00f3n con perif\u00e9ricos de entrada y salida como la pantalla y el teclado as\u00ed como el manejo de archivos.\n<\/pre>\u00a0<\/div>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t<\/a><\/figure><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\tDe esta manera se pueden importar funciones muy \u00fatiles a nuestro c\u00f3digo. Entonces surge la pregunta, \u00bfPodemos crear nuestras propias librer\u00edas?. La respuesta es s\u00ed, cuando queremos compartir funciones o tipos de datos comunes entre varios c\u00f3digos, o cuando queremos \u201cmodularizar\u201d nuestro proyecto, de manera que todo el c\u00f3digo no aparezca en un solo archivo para que pueda ser m\u00e1s legible. \n\nEn una ocacion que me toc\u00f3 hacer un servidor para un chat de consola, el c\u00f3digo era tan grande que y muchas funciones se repet\u00edan, as\u00ed que decid\u00ed seccionar el c\u00f3digo en peque\u00f1as librer\u00edas o m\u00f3dulos, quedando de esta manera.<\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t<\/a><\/figure>
Diagrama de bloques<\/a><\/p><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t<\/a><\/figure>
Sistemas de archivos<\/a><\/p><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t\n\t\t\tC\u00f3mo creamos nuestra propia librer\u00eda<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\tEntonces yendo al grano y al prop\u00f3sito de \u00e9ste blog, como creamos nuestras propias librer\u00edas. La verdad es que es un procedimiento m\u00e1s f\u00e1cil del que parece. Y podemos dividirlo en 2 m\u00e9todos.<\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\tM\u00e9todo 1: Utilizar librer\u00edas en el mismo directorio #include \u201clibreria.h\u201d<\/h5>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\tPongamos el ejemplo de que quiero crear una librer\u00eda para operaciones aritm\u00e9ticas y quiero incluir esta librer\u00eda para probarla en otro archivo. Para esto seguimos los siguientes pasos.<\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t
1. Crear el archivo de cabeceras<\/span><\/h3><\/span><\/h5>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\tCreamos un archivo con extensi\u00f3n \u201c.h\u201d en el mismo directorio del c\u00f3digo principal, \u00e9ste archivo debe tener todos los prototipos de funciones y definiciones de tipos de datos de tu librer\u00eda.<\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t#ifndef _LIBRERIA\n#define _LIBRERIA\n\nfloat suma(float A,float B);\nfloat resta(float A,float B);\nfloat multiplicacion(float A,float B);\n\n#include \u2033libreria.c\u2033\n#endif\n<\/code><\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t2. Crear el archivo del c\u00f3digo de la librer\u00eda<\/span><\/span><\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\tEl archivo del c\u00f3digo de la librer\u00eda, contiene incluye el archivo de cabecera que creamos anteriormente y adem\u00e1s contiene el c\u00f3digo de todas las funciones que fueron escritas en el archivo de cabecera.<\/pre>\u00a0<\/p><\/blockquote>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t#include \u2033libreria.h\u2033\n\nfloat suma(float A,float B){\n return A+B;\n}\nfloat resta(float A,float B){\n return A-B;\n}\nfloat multiplicacion(float A,float B){\n return A*B;\n}\n<\/code><\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t3. Llamar a la librer\u00eda<\/span><\/span><\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\tCuendo esten terminados ambos archivos, nuestra librer\u00eda est\u00e1 lista para ser usada. Creamos el archivo test.c dentro del mismo directorio, incluimos las librer\u00edas est\u00e1ndar y la nueva librer\u00eda que creamos.<\/pre>\u00a0<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t#include \u2033libreria.h\u2033\n
void main(){\n int A = 1;\n int B = 2;\n printf(\u2033Resultado de %d+%d = %f\\n\u2033, A,B,suma(A,B));\n printf(\u2033Resultado de %d-%d = %f\\n\u2033, A,B,resta(A,B));\n printf(\u2033Resultado de %d*%d = %f\\n\u2033, A,B,multiplicacion(A,B));\n return 0;
}\n<\/code><\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t \n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t<\/a><\/figure>
Resultado<\/a><\/p><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t<\/a><\/figure>
Sistema de Archivos<\/a><\/p><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t\n\t\t\tM\u00e9todo 2: Utilizar librer\u00edas en el directorio include del compilador #include <libreria.h>\n<\/h5>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\u00c9ste segundo m\u00e9todo consiste en guardar una copia de la librer\u00eda que creamos antes, directamente en la carpeta del compilador. Esto permitir\u00e1 llamar a la librer\u00eda desde cualquier c\u00f3digo como si fuese una librer\u00eda estandar.<\/pre>\u00a0<\/pre>1. Copiar la librer\u00eda a la carpeta del compilador<\/span>\n
<\/span><\/pre>Copiar los archivos \u201clibreria.h\u201d y \u201clibreria.c\u201d a la carpeta include del compilador, la ruta de esta carpeta podr\u00eda cambiar dependiendo del programa que est\u00e9s utilizando. En mi caso utilizo el IDE Dev-C++<\/a> y la ruta ser\u00eda la siguiente.<\/pre>C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\include<\/span><\/p>
\u00a0<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\t\t \n\t\t\t\t\t\t\t