[Powered by Google Translate] NATE Hardison: Nella programmazione, una biblioteca è una raccolta di codice correlato prewritten. Le biblioteche sono come noi, come i programmatori, le azioni ordinarie e codice utile con l'altro, con i diversi programmi che scrivere, e anche con i diversi processi in esecuzione contemporaneamente sui nostri computer. Analizziamo un po '. Una delle funzioni più comuni che probabilmente avete usato è la funzione printf. Ora, printf non è una funzione magica che è stato hard-coded nel computer - piuttosto, è parte delle librerie standard di C, che sono un insieme di funzioni che viene fornito con il C linguaggio di programmazione. Poiché printf non è incorporato nel computer, ciò significa che ci fosse qualche programmatore che effettivamente è andato e ha scritto la funzione printf e bundle con il resto della norma librerie in modo che i futuri programmatori non avrebbe dovuto duplicare gli sforzi. E siamo sicuri grati che questo è il caso, perché controllare la quantità di codice necessario per implementare effettivamente printf. Le librerie standard di C, di cui una parte è printf, sono uno degli strumenti più importanti che hanno nella lotta CS50. Oltre al input-output biblioteca dove printf vita, ci sono un sacco di altre biblioteche che probabilmente utilizzare nel corso del CS50. Per esempio, la libreria ha funzioni di stringa confrontare le stringhe C, ottenere la loro lunghezza, e concatenare loro. E la libreria matematica ti dà utili costanti, come il pi greco ed e. Ora, rispetto alle librerie standard di programmazione altra lingue, le librerie standard C sono davvero piccole, ma hanno ancora una notevole quantità di roba. E questo non vuol dire che le librerie standard sono il C solo le librerie, ci sono molti altri là fuori nel mondo per l'uso, tra cui la Biblioteca CS50, biblioteche cartografia con crittografia e decrittografia funzioni, librerie con funzioni per codificare e riprodurre video, e così via. Questo ci porta ad una parte importante. Una delle competenze essenziali di ingegneria è conoscere la strumenti disponibili nella cassetta degli attrezzi in modo da poter utilizzare ed evitare di reinventare la ruota a meno che non quello che dovete fare così. Come i programmatori, le biblioteche sono uno dei più importanti strumenti che abbiamo. Quando ci si trova di fronte a un compito che sembra noioso o banale, come trovare la lunghezza di una stringa C, si dovrebbe chiedersi se potrebbe essere il caso che qualcuno ha già fatto la stessa cosa prima. Le probabilità sono che si potrebbe trovare un po ' aiuto all'interno di una libreria. Quindi, in termini tecnici, una biblioteca è un file binario che è stato prodotto mettendo in correlazione una raccolta di file oggetto usando uno strumento chiamato, è indovinato, il linker. I file oggetto sono quelli. File o che si ottiene quando si compilare il codice sorgente C. Quando i programmatori scrivere librerie, in genere separare il codice C in due tipi di file: file di intestazione e file di implementazione. Un file di intestazione per convenzione viene dato l'estensione di file. H, e contiene un codice che dichiari la biblioteca risorse che sono disponibili per l'uso. Queste risorse includono funzioni, variabili, strutture, definizioni di tipo, e così via, e insieme, sono comunemente indicato come l'interfaccia. In realtà, se si sta chiedendo che cosa è mai in una libreria, i file di intestazione sono il posto dove guardare. Ad esempio, è possibile tirare su usr / include / stdio.h e controllare tutto quello che avreste sempre voluto sapere sul la biblioteca io standard. C'è un sacco di roba qui dentro, e si può prendere un po 'di il tempo di guadare attraverso. Tuttavia, con Google e le pagine man, questo è il posto dove andare se vi state chiedendo come l'I / O standard funzioni di libreria lavoro. Quindi una cosa fondamentale da notare qui, però, è che i file header in genere non includono definizioni di funzione - cioè, le implementazioni delle funzioni effettive. Questo è un esempio di un importante informatica principio chiamato information hiding, anche di cui al punto volte più incapsulamento. Come l'utente o il cliente di una libreria, non c'è bisogno di conoscere la struttura interna della biblioteca in al fine di usarlo. Ricordo di aver visto printf solo un po 'fa? Avevi mai visto il codice vero e proprio prima? Beh, suppongo che tu non hai, anche se si potrebbe hanno usato printf tonnellate di volte. Tutto quello che doveva sapere era il presente dichiarazione di funzione nel file di intestazione stdio.h. In ogni caso, il beneficio di information hiding buona è che si ei programmi che scrivi sono isolati dalla variazione di il codice per l'esecuzione di funzioni di libreria. Se la realizzazione di modifiche printf, non si dispone di di andare a cambiare tutti i programmi che utilizzano printf. Allora, dove si va di attuazione? Bene, ancora una volta, per convenzione, l'attuazione va in una file con l'estensione di file. c. Di solito, i file header e file di implementazione vanno di pari in mano, quindi se hai dichiarato un gruppo di nuova stringa funzioni in mystring.h, allora si dovrà definire tutti tali funzioni in MyString. c. Allora i file di intestazione e l'attuazione sono quindi compilato, la creazione di file oggetto che vengono poi collegati insieme per produrre il file di libreria binario. Lo scrittore biblioteca poi spedire il file binario lungo con i file di intestazione per i programmatori che desiderano utilizzare la biblioteca. A questo punto, i file di implementazione. C non sono necessario, tranne la ricompilazione della libreria da zero, in modo da sono spesso lasciati fuori. Per utilizzare la libreria C, è necessario fare due cose. In primo luogo, è necessario # include file di intestazione della biblioteca e dei file di codice sorgente in cui si desidera utilizzare della biblioteca del codice. Questo informa il compilatore di tutte le dichiarazioni di funzioni, variabili, strutture, eccetera, presenti nel file di intestazione in modo che il compilatore si può, assicurare che si sta utilizzando le risorse della biblioteca in modo corretto, e due, generare il relativo codice assembly. A seconda di dove i file di intestazione della biblioteca sono trova, la sintassi # include varia. Se i file di intestazione si trovano nella di sistema predefinita directory include - tipicamente, usr/include-- quindi la sintassi angolo parentesi viene utilizzato, come in # include . Tuttavia, se i file di intestazione si trovano nella stessa directory come il proprio codice, la sintassi è doppio apice usato, come in # include "mylib.h". La seconda cosa che dovete fare è collegare il binario libreria di file quando si compila il codice. Questo è un passo super importante. Ricordate la nostra precedente discussione su come intestazione file non contengono codice di implementazione? Se si dimentica questo passaggio, otterrete errori su i simboli non definiti riferimento nel codice. Per risolvere questo problema, utilizzare l'opzione-l seguita immediatamente senza uno spazio dal nome della libreria. Su molti sistemi, tra cui l 'apparecchio, lo Standard C Le biblioteche sono automaticamente collegati per voi. Tuttavia, la libreria matematica a volte è fornito separatamente e potrebbe aver bisogno di essere collegato con-lm. Su questo apparecchio, si prenderà cura di questo per voi, e abbiamo anche linkare la libreria-CS50 con lcs50. Potete vedere tutto questo sull'apparecchio quando si esegue fare. Ora si dovrebbe avere le conoscenze necessarie per utilizzare librerie in C. Buon divertimento esplorare. Il mio nome è Nate Hardison, e questo è CS50.