[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.