1 00:00:06,692 --> 00:00:09,470 [Powered by Google Translate] Nate Hardison: Na programación, unha biblioteca é unha colección de 2 00:00:09,470 --> 00:00:11,380 código pre-escritos relacionados. 3 00:00:11,380 --> 00:00:14,350 As bibliotecas son coma nós, desenvolvedores, acción ordinaria e 4 00:00:14,350 --> 00:00:16,930 código útil co outro, cos programas que 5 00:00:16,930 --> 00:00:19,470 escribir, e mesmo cos diferentes procesos rodando a 6 00:00:19,470 --> 00:00:21,380 ao mesmo tempo nos nosos ordenadores. 7 00:00:21,380 --> 00:00:23,000 >> Imos explorar un pouco. 8 00:00:23,000 --> 00:00:25,070 Unha das funcións máis comúns que xa debe ter 9 00:00:25,070 --> 00:00:27,500 está a utilizar é a función printf. 10 00:00:27,500 --> 00:00:29,820 Agora printf non é unha función máxica que foi 11 00:00:29,820 --> 00:00:31,670 embutida no ordenador - 12 00:00:31,670 --> 00:00:34,320 antes, é parte das bibliotecas C estándar, que son 13 00:00:34,320 --> 00:00:36,080 unha colección de funcións que vén co 14 00:00:36,080 --> 00:00:38,050 C linguaxe de programación. 15 00:00:38,050 --> 00:00:40,920 Dende printf non está construído no ordenador, o que significa que 16 00:00:40,920 --> 00:00:43,520 houbo algún desenvolvedor que realmente entrou e escribiu o 17 00:00:43,520 --> 00:00:46,310 función printf e embalaxe co resto da normativa 18 00:00:46,310 --> 00:00:48,880 bibliotecas para que futuros programadores non tería que 19 00:00:48,880 --> 00:00:50,310 duplicar o esforzo. 20 00:00:50,310 --> 00:00:52,620 E temos seguro grata que ese é o caso, porque o check 21 00:00:52,620 --> 00:00:54,710 o canto de código que realmente leva para aplicar printf. 22 00:00:59,590 --> 00:01:02,860 >> As bibliotecas C defecto, dos cales printf é unha parte, son 23 00:01:02,860 --> 00:01:04,480 unha das ferramentas máis importantes que 24 00:01:04,480 --> 00:01:06,770 teñen no combate CS50. 25 00:01:06,770 --> 00:01:08,780 En adición á biblioteca de entrada-saída, onde 26 00:01:08,780 --> 00:01:11,370 printf vidas, hai unha morea de outras bibliotecas que 27 00:01:11,370 --> 00:01:14,230 probablemente vai usar ao longo do CS50. 28 00:01:14,230 --> 00:01:16,730 Por exemplo, a biblioteca ten funcións de cadea 29 00:01:16,730 --> 00:01:20,960 comparar cadeas C, obter a súa lonxitude, e concatená-las. 30 00:01:20,960 --> 00:01:22,410 E a biblioteca de matemáticas dálle útil 31 00:01:22,410 --> 00:01:25,062 constantes, como pi e e. 32 00:01:25,062 --> 00:01:27,650 Agora, en comparación coas bibliotecas estándar de outra programación 33 00:01:27,650 --> 00:01:31,190 linguas, as bibliotecas C estándar son pequenos, 34 00:01:31,190 --> 00:01:34,060 pero eles aínda teñen unha cantidade significativa de material. 35 00:01:34,060 --> 00:01:36,370 E iso non quere dicir que as bibliotecas estándar son o 36 00:01:36,370 --> 00:01:39,020 só bibliotecas C, hai moitos máis aí fóra, no 37 00:01:39,020 --> 00:01:42,460 mundo para usar, incluíndo a Biblioteca CS50, 38 00:01:42,460 --> 00:01:45,150 libraries cartografía con cifrado e descriptografar 39 00:01:45,150 --> 00:01:48,000 funcións, bibliotecas con funcións para codificar e 40 00:01:48,000 --> 00:01:50,970 reproducir o vídeo, e así por diante. 41 00:01:50,970 --> 00:01:53,190 >> Isto nos leva a un separadamente importante. 42 00:01:53,190 --> 00:01:55,500 Unha das habilidades esenciais de Enxeñaría e saber 43 00:01:55,500 --> 00:01:58,090 ferramentas dispoñibles na súa caixa de ferramentas de modo que pode empregar 44 00:01:58,090 --> 00:01:59,850 eles e non reinventar a roda, a menos 45 00:01:59,850 --> 00:02:01,510 ten que facelo. 46 00:02:01,510 --> 00:02:04,120 Como desenvolvedores, bibliotecas son un dos máis importantes 47 00:02:04,120 --> 00:02:05,520 ferramentas que temos. 48 00:02:05,520 --> 00:02:08,520 Cando se atopa ante unha tarefa que parece tedioso ou 49 00:02:08,520 --> 00:02:11,940 comúns, como atopar a lonxitude dunha cadea C, vostede 50 00:02:11,940 --> 00:02:14,020 debe preguntar se pode ser o caso de que 51 00:02:14,020 --> 00:02:16,520 Alguén xa fixo a mesma cousa antes. 52 00:02:16,520 --> 00:02:17,760 As posibilidades son de que podería atopar algunha 53 00:02:17,760 --> 00:02:20,110 axudar dentro dunha biblioteca. 54 00:02:20,110 --> 00:02:23,260 >> Polo tanto, en termos técnicos, unha biblioteca e un arquivo binario que 55 00:02:23,260 --> 00:02:26,210 foi producido por conexión en conxunto unha colección de 56 00:02:26,210 --> 00:02:28,880 arquivos obxecto usando unha ferramenta chamada, vostede 57 00:02:28,880 --> 00:02:31,010 difícil de adiviñar, o vinculador. 58 00:02:31,010 --> 00:02:33,830 Arquivos obxecto son aqueles. O arquivo que comeza cando 59 00:02:33,830 --> 00:02:35,860 compilar C fonte. 60 00:02:35,860 --> 00:02:38,420 Cando os programadores escribir bibliotecas, normalmente 61 00:02:38,420 --> 00:02:41,560 separar o seu código C en dous tipos de arquivos: 62 00:02:41,560 --> 00:02:44,880 ficheiros de cabeceira e arquivos de implementación. 63 00:02:44,880 --> 00:02:49,820 Un arquivo de cabeceira por convención é dada a extensión de arquivo. H, 64 00:02:49,820 --> 00:02:51,940 e contén código que declara o da biblioteca 65 00:02:51,940 --> 00:02:55,120 recursos que están dispoñibles para usar. 66 00:02:55,120 --> 00:02:58,830 Estes recursos inclúen funcións, variables, estruturas, 67 00:02:58,830 --> 00:03:01,980 definicións de tipo, e así por diante, e en conxunto, son 68 00:03:01,980 --> 00:03:04,620 xeralmente refire como a interface. 69 00:03:04,620 --> 00:03:07,280 En realidade, se está sempre pregunta o que hai nunha biblioteca, 70 00:03:07,280 --> 00:03:09,580 os ficheiros de cabeceira son o lugar para ollar. 71 00:03:09,580 --> 00:03:14,030 >> Por exemplo, pode puxar arriba usr / include / stdio.h e comproba 72 00:03:14,030 --> 00:03:16,210 todo o que sempre quixo saber sobre 73 00:03:16,210 --> 00:03:18,570 biblioteca io estándar. 74 00:03:18,570 --> 00:03:20,610 Hai unha morea de cousas aquí, e iso pode levar un pouco de 75 00:03:20,610 --> 00:03:22,420 tempo para percorrer. 76 00:03:22,420 --> 00:03:25,840 Con todo, xunto con Google e as páxinas de manual, que é o 77 00:03:25,840 --> 00:03:28,060 lugar para ir se está a se pregunta como o estándar de I / O 78 00:03:28,060 --> 00:03:30,460 funcións da biblioteca traballar. 79 00:03:30,460 --> 00:03:33,910 Entón, unha cousa fundamental notar aquí, con todo, é que os arquivos de cabeceira 80 00:03:33,910 --> 00:03:36,740 normalmente non inclúen definicións de funcións - 81 00:03:36,740 --> 00:03:40,020 é dicir, as implementacións de funcións reais. 82 00:03:40,020 --> 00:03:42,470 Esta é unha ilustración dunha computación importante 83 00:03:42,470 --> 00:03:45,700 principio chamado ocultación de información, tamén se refire o 84 00:03:45,700 --> 00:03:48,960 veces como o encapsulamento. 85 00:03:48,960 --> 00:03:52,630 >> Como o usuario ou cliente dunha biblioteca, non 86 00:03:52,630 --> 00:03:54,230 saber sobre os internos da biblioteca 87 00:03:54,230 --> 00:03:55,380 a fin de usalo. 88 00:03:55,380 --> 00:03:57,800 Lembro de ver printf só un pouco atrás? 89 00:03:57,800 --> 00:04:00,275 Xa viu o código real antes? 90 00:04:00,275 --> 00:04:02,535 Ben, eu supoño que non ten, aínda que pode 91 00:04:02,535 --> 00:04:05,090 usaron toneladas printf de veces. 92 00:04:05,090 --> 00:04:08,110 Todo o que tiña que saber era o presente declaración da función 93 00:04:08,110 --> 00:04:10,940 no ficheiro de cabeceira stdio.h. 94 00:04:10,940 --> 00:04:14,010 En calquera caso, o beneficio de ocultación de información boa é que 95 00:04:14,010 --> 00:04:16,820 e os programas que escribe son illadas de calquera cambio 96 00:04:16,820 --> 00:04:20,209 o código da aplicación de funcións de biblioteca. 97 00:04:20,209 --> 00:04:22,880 A implementación de cambios printf, non ten 98 00:04:22,880 --> 00:04:26,310 para ir e cambiar todos os seus programas que usan printf. 99 00:04:26,310 --> 00:04:28,450 >> Entón onde é que a aplicación vai? 100 00:04:28,450 --> 00:04:31,020 Ben, unha vez máis, por convención, a implementación vai nun 101 00:04:31,020 --> 00:04:34,310 arquivo coa extensión de ficheiro. c. 102 00:04:34,310 --> 00:04:36,820 Normalmente, os ficheiros de cabeceira e arquivos de implementación andan 103 00:04:36,820 --> 00:04:39,380 na man, por iso, se declarou unha morea de nova cadea 104 00:04:39,380 --> 00:04:42,950 funcións en mystring.h, entón vai definir todos 105 00:04:42,950 --> 00:04:46,960 estas funcións en mystring. c. 106 00:04:46,960 --> 00:04:49,230 Entón os ficheiros de cabeceira e implementación son, entón, 107 00:04:49,230 --> 00:04:52,230 compilado, a creación de ficheiros de obxectos que son, entón, conectados 108 00:04:52,230 --> 00:04:55,360 en conxunto para producir o arquivo de biblioteca binario. 109 00:04:55,360 --> 00:04:58,520 O escritor biblioteca, entón, enviar o ficheiro binario ao longo 110 00:04:58,520 --> 00:05:00,720 cos ficheiros de cabeceira para programadores que desexen utilizar 111 00:05:00,720 --> 00:05:02,280 a biblioteca. 112 00:05:02,280 --> 00:05:04,640 Neste punto, os ficheiros. Implantación C non son 113 00:05:04,640 --> 00:05:07,840 necesario, excepto para recompilar a biblioteca de cero, entón 114 00:05:07,840 --> 00:05:10,270 son moitas veces deixados de fóra. 115 00:05:10,270 --> 00:05:13,670 >> Para usar a biblioteca C, ten que facer dúas cousas. 116 00:05:13,670 --> 00:05:16,890 Primeiro, ten que # incluír arquivos de cabeceira da biblioteca e 117 00:05:16,890 --> 00:05:18,700 ficheiro de código fonte en que quere usar 118 00:05:18,700 --> 00:05:20,530 código da biblioteca. 119 00:05:20,530 --> 00:05:23,200 Isto informa o compilador de todas as declaracións de 120 00:05:23,200 --> 00:05:26,890 funcións, variables, estruturas, etcétera, presentes no 121 00:05:26,890 --> 00:05:30,510 ficheiros de cabeceira para que o compilador pode un, garantir que 122 00:05:30,510 --> 00:05:33,280 está a usar recursos da biblioteca de forma adecuada, 123 00:05:33,280 --> 00:05:37,120 e dous, xerar o código de montaxe apropiado. 124 00:05:37,120 --> 00:05:38,910 Dependendo de onde os arquivos da biblioteca de cabeceira son 125 00:05:38,910 --> 00:05:42,720 situado, a sintaxe # include varía. 126 00:05:42,720 --> 00:05:44,880 Se os ficheiros de cabeceira están localizados no sistema de 127 00:05:44,880 --> 00:05:46,690 estándar inclúen directorio - 128 00:05:46,690 --> 00:05:48,780 Tipicamente, usr/include-- 129 00:05:48,780 --> 00:05:52,200 a continuación, a sintaxe de corchetes ángulo é usado, como en # include 130 00:05:52,200 --> 00:05:53,450 . 131 00:05:57,440 --> 00:05:59,540 Con todo, os ficheiros de inclusión están situados na mesma 132 00:05:59,540 --> 00:06:02,960 directorio como o seu propio código, a sintaxe é comiñas dobres 133 00:06:02,960 --> 00:06:04,870 usado, como en # incluír "mylib.h". 134 00:06:08,630 --> 00:06:11,220 >> A segunda cousa que cómpre facer é conectar o binario 135 00:06:11,220 --> 00:06:13,760 biblioteca de arquivos cando compilar o código. 136 00:06:13,760 --> 00:06:15,810 Este é un paso importante super. 137 00:06:15,810 --> 00:06:17,540 Lembre-se de nosa discusión anterior sobre como cabeceira 138 00:06:17,540 --> 00:06:20,200 arquivos non conteñen código de implementación? 139 00:06:20,200 --> 00:06:22,200 Se esquecer este paso, terá erros sobre 140 00:06:22,200 --> 00:06:24,990 símbolos indefinidos referenciado no seu código. 141 00:06:24,990 --> 00:06:29,580 Para solucionar isto, use o sinalizador-L seguido inmediatamente 142 00:06:29,580 --> 00:06:32,320 sen un espazo de polo nome da biblioteca. 143 00:06:32,320 --> 00:06:35,410 En moitos sistemas, incluíndo o aparello, o Standard C 144 00:06:35,410 --> 00:06:38,350 Bibliotecas son ligadas automaticamente para ti. 145 00:06:38,350 --> 00:06:41,700 Con todo, a biblioteca matemática é moitas veces agrupados por separado 146 00:06:41,700 --> 00:06:44,600 e pode ter que ser conectada co-LM. 147 00:06:44,600 --> 00:06:47,760 O aparello, nós coidamos diso para ti, e nós tamén 148 00:06:47,760 --> 00:06:52,170 conectar a biblioteca con CS50-lcs50. 149 00:06:52,170 --> 00:06:54,540 Podes ver todo isto no aparello cando executar o make. 150 00:06:57,620 --> 00:06:59,130 >> Agora ten que ter o coñecemento necesario para usar 151 00:06:59,130 --> 00:07:02,150 bibliotecas en C. Disfrútao se explotar. 152 00:07:02,150 --> 00:07:05,880 O meu nome é Nate Hardison, e este é o CS50.