[Powered by Google Translate] NATE Hardison: En programación, una biblioteca es una colección de código relacionado previamente escrito. Las bibliotecas son como nosotros, como programadores, acción común y código útil entre sí, con los diferentes programas escribir, e incluso con los distintos procesos en marcha mismo tiempo en nuestros ordenadores. Vamos a explorar un poco. Una de las funciones más comunes que usted probablemente ha estado usando es la función printf. Ahora, printf no es una función mágica que ha sido en forma fija en la computadora - más bien, es parte de las bibliotecas C estándar, que son una colección de funciones que viene con el C lenguaje de programación. Desde printf no está integrada en el ordenador, lo que significa que hubo algún programador que realmente fue y escribió el función printf y liado con el resto de la norma bibliotecas para que los futuros programadores no tienen que duplicar el esfuerzo. Y estamos seguros de agradecer que ese es el caso, debido a verificar por la cantidad de código que realmente se necesita para implementar printf. Las bibliotecas C estándar, de los cuales printf es una parte, son una de las herramientas más importantes que tener en la lucha contra CS50. Además de la biblioteca de entrada-salida donde printf vidas, hay un montón de otras bibliotecas que es probable que utilice en el transcurso de CS50. Por ejemplo, la biblioteca de cadenas tiene funciones para comparar cadenas de C, obtenga su longitud, y concatenar ellos. Y la biblioteca de matemáticas le da útil constantes, como pi y e. Ahora, en comparación con las bibliotecas estándar de programación de otra idiomas, las bibliotecas C estándar son muy pequeñas, pero todavía tienen una gran cantidad de cosas. Y eso no quiere decir que las bibliotecas estándar son la Sólo bibliotecas de C, hay muchos más por ahí en la mundo para su uso, incluyendo la Biblioteca CS50, bibliotecas de cartografía con el cifrado y el descifrado funciones, las bibliotecas con funciones para codificar y reproducir video, y así sucesivamente. Esto nos lleva a un aparte importante. Una de las habilidades esenciales de la ingeniería es conocer el herramientas disponibles en su caja de herramientas para que pueda utilizar ellos y evitar reinventar la rueda a menos que usted tiene que hacerlo. Como programadores, las bibliotecas son uno de los más importantes herramientas que tenemos. Cuando usted se encuentra frente a una tarea que parece aburrido o común, como encontrar la longitud de una cadena C, debe preguntarse si puede darse el caso de que alguien ya ha hecho lo mismo antes. Lo más probable es que usted puede encontrar algunos ayuda dentro de una biblioteca. Así que en términos técnicos, una biblioteca es un archivo binario que Se ha producido uniendo una colección de archivos de objetos utilizando una herramienta llamada, usted adivinado, el enlazador. Archivos de objetos son esos. Archivos o que se obtiene cuando se compilar código C fuente. Cuando los programadores escribir bibliotecas, por lo general separar su código C en dos tipos de archivos: archivos de cabecera y los archivos de implementación. Un archivo de encabezado, por convención, se le da la extensión. H archivo, y contiene código que declare la biblioteca de recursos que están disponibles para su uso. Estos recursos incluyen funciones, variables, estructuras, definiciones de tipo, y así sucesivamente, y juntos, son comúnmente se conoce como la interfaz. De hecho, si alguna vez se preguntan qué hay en una biblioteca, los archivos de cabecera son el lugar para buscar. Por ejemplo, usted puede levantar usr / include / stdio.h y comprobar todo lo que usted siempre quiso saber acerca de la biblioteca estándar de io. Hay un montón de cosas aquí, y puede tomar un poco de tiempo para revisar. Sin embargo, junto con Google y las páginas de manual, este es el lugar para ir si usted se está preguntando cómo el estándar de E / S funciones de la biblioteca funcione. Así que una cosa clave a destacar aquí, sin embargo, es que los archivos de cabecera por lo general no incluyen la definición de funciones - es decir, las implementaciones de la función reales. Esta es una ilustración de una ciencia de la computación importante principio llamado ocultamiento de información, también se hace referencia en veces como encapsulación. A medida que el usuario o el cliente de una biblioteca, no es necesario conocer el funcionamiento interno de la biblioteca en para poder utilizarlo. Recuerdo haber visto printf sólo un poco atrás? ¿Habías visto alguna vez el código real antes? Bueno, supongo que usted no tiene, a pesar de que podría han utilizado printf toneladas de veces. Todo lo que tenía que saber era la declaración de la función actual en el archivo de cabecera stdio.h. De todos modos, el beneficio de ocultación de información buena es que usted y los programas que escriben están aislados de cualquier cambio en el código de la aplicación de funciones de la biblioteca. Si la implementación de los cambios printf, usted no tiene ir y cambiar todos los programas que utilizan printf. Entonces, ¿dónde implementación ir? Bueno, de nuevo, por convenio, la ejecución va en un archivo con la extensión. c. Por lo general, los archivos de cabecera y los archivos de aplicación van en la mano, así que si usted ha declarado un montón de nueva cadena funciones en mystring.h, entonces usted definir todos esas funciones en micadena. c. Así que los archivos de cabecera y la ejecución son entonces compilado, la creación de archivos de objetos que luego son unidos juntos para producir el archivo de biblioteca binaria. El escritor biblioteca entonces se enviará el archivo binario a lo largo de con los archivos de cabecera para los programadores que desean utilizar la biblioteca. En este punto, los archivos. C de implementación no son es necesario, salvo que recompilar la biblioteca a partir de cero, por lo que están a menudo dejados de lado. Para utilizar la biblioteca C, lo que tienes que hacer dos cosas. En primer lugar, usted debe incluir # archivos de la biblioteca de cabecera y los archivo de código fuente que desea utilizar de la biblioteca de código. Esto informa al compilador de todas las declaraciones de funciones, variables, estructuras, etcétera, presentes en la archivos de cabecera para que el compilador puede uno, asegúrese de que que está utilizando recursos de la biblioteca en la manera adecuada, y dos, generar el código ensamblador correspondiente. Dependiendo de donde los archivos de la biblioteca de cabecera son localizado, la sintaxis # include varía. Si los archivos de cabecera se encuentra en el sistema de defecto include - típicamente, usr/include-- la sintaxis se utiliza paréntesis angulares, como en # include . Sin embargo, si los archivos de cabecera se encuentra en el mismo directorio como su propio código, la sintaxis de comillas dobles es utilizado, como en # include "mylib.h". La segunda cosa que hay que hacer es vincular en el binario biblioteca de archivos al compilar el código. Este es un paso importante super. Recuerde nuestra discusión anterior sobre cómo cabecera archivos no contienen el código de implementación? Si se olvida este paso, recibirá errores sobre símbolos no definidos referencia en el código. Para resolver este problema, utilice la opción-l seguido inmediatamente sin espacio por el nombre de la biblioteca. En muchos sistemas, incluyendo el aparato, el estándar de C Las bibliotecas se vinculan automáticamente por usted. Sin embargo, la biblioteca matemática es a veces incluido por separado y es posible que se enlaza con-lm. En el dispositivo, nosotros nos encargamos de esto para usted, y también nos vincular la biblioteca con CS50-lcs50. Puedes ver todo esto en el aparato cuando se ejecuta make. Ahora usted debería tener los conocimientos necesarios para utilizar bibliotecas en C. Que se diviertan explorando. Mi nombre es Nate Hardison, y esto es CS50.