# C/Blocchi e funzioni/Librerie

C
Copertina Tutti i moduli · Sviluppo
* LinguaggioC/Linguaggio
** PanoramicaC/Linguaggio/Panoramica
** Struttura del linguaggioC/Linguaggio/Struttura del linguaggio
* Variabili, operatori e costantiC/Variabili, operatori e costanti
** VariabiliC/Variabili, operatori e costanti/Variabili
** Operatori aritmeticiC/Variabili, operatori e costanti/Operatori aritmetici
** Operatori sui bitC/Variabili, operatori e costanti/Operatori sui bit
** CostantiC/Variabili, operatori e costanti/Costanti
* Blocchi e funzioniC/Blocchi e funzioni
** Blocchi if e switchC/Blocchi e funzioni/Blocchi if e switch
** Operatori logiciC/Blocchi e funzioni/Operatori logici
** CicliC/Blocchi e funzioni/Cicli
** FunzioniC/Blocchi e funzioni/Funzioni
** mainC/Blocchi e funzioni/main
** LibrerieC/Blocchi e funzioni/Librerie
** RicorsivitàC/Blocchi e funzioni/Ricorsività
* Vettori e puntatoriC/Vettori e puntatori
** VettoriC/Vettori e puntatori/Vettori
** PuntatoriC/Vettori e puntatori/Puntatori
** Interscambiabilità tra puntatori e vettoriC/Vettori e puntatori/Interscambiabilità tra puntatori e vettori
* StringheC/Variabili, operatori e costanti/Stringhe
* Enumerazioni, strutture e unioniC/Enumerazioni, strutture e unioni
** EnumerazioniC/Enumerazioni, strutture e unioni/Enumerazioni
** StruttureC/Enumerazioni, strutture e unioni/Strutture
** UnioniC/Enumerazioni, strutture e unioni/Unioni
* Conversioni di tipoC/Conversioni di tipo
* Lettura e scrittura su fileC/Lettura e scrittura su file
** File di TestoC/Lettura e scrittura su file/File di Testo
** File BinariC/Lettura e scrittura su file/File Binari
* Compilatore e precompilatoreC/Compilatore e precompilatore
** CompilatoreC/Compilatore e precompilatore/Compilatore
** DirettiveC/Compilatore e precompilatore/Direttive
** HeaderC/Compilatore e precompilatore/Header
* VisibilitàC/Visibilità
* Gestione della memoriaC/Gestione della memoria
* Le applicazioni CGIC/Le applicazioni CGI
* Appendice
** Librerie standardC/Appendice/Librerie standard
*** assert.hC/Appendice/Librerie standard/assert.h
*** ctype.hC/Appendice/Librerie standard/ctype.h
*** errno.hC/Appendice/Librerie standard/errno.h
*** float.hC/Appendice/Librerie standard/float.h
*** limits.hC/Appendice/Librerie standard/limits.h
*** locale.hC/Appendice/Librerie standard/locale.h
*** math.hC/Appendice/Librerie standard/math.h
*** setjmp.hC/Appendice/Librerie standard/setjmp.h
*** signal.hC/Appendice/Librerie standard/signal.h
*** stdarg.hC/Appendice/Librerie standard/stdarg.h
*** stddef.hC/Appendice/Librerie standard/stddef.h
*** stdio.hC/Appendice/Librerie standard/stdio.h
*** stdlib.hC/Appendice/Librerie standard/stdlib.h
*** string.hC/Appendice/Librerie standard/string.h
*** time.hC/Appendice/Librerie standard/time.h
** StrumentiC/Appendice/Strumenti
*** InstallerC/Appendice/Strumenti/Installer
** Librerie esterneC/Appendice/Librerie esterne
* Bibliografia
    IndiceC/Indice
Modifica il sommario

## Librerie

Nel Linguaggio C, come nella maggior parte dei linguaggi ad alto livello, esistono le librerie, che sono una collezione di funzioni precompilate che possono essere collegate al programma che si sta creando per sfruttarne le funzionalità.

### Dichiarazione d'uso

L'ambiente di sviluppo viene fornito con una serie di librerie standard, ma ogni utente può crearne una sua propria collezione che utilizzerà nei suoi programmi. Per collegare una libreria ad un programma bisogna specificare all'interno del codice il suo uso attraverso la clausola #include <nomelibreria.h>; quindi il file .h (da header, intestazione), file di testo che contiene le informazioni relative alle funzioni e alle variabili contenute nel codice oggetto, viene incluso assieme al sorgente nel file che viene fornito al compilatore.
Esempio:

### Collegamento di una libreria

Durante la compilazione, il codice oggetto della libreria viene collegato al codice oggetto del programma utente, e le funzioni di libreria rese così accessibili da questo.
Nel Linguaggio C, il tipo stringa non è definito, ma è stata creata una libreria che lo implementa; questa viene collegata tramite lo header string.h. Altre librerie sono math.h, stdio.h. Le parentesi angolari servono per far ricercare la libreria nella directory standard; per cercare in percorsi diversi bisogna fornire il percorso completo anteposto al nome della libreria, senza parentesi angolari (per esempio "c:\linguaggio_C\mielib\mialibreria.h").
Dopo aver incluso una libreria bisogna necessariamente istruire il linker su dove trovare l'implementazione. Se la libreria è standard il linker lo cercherà automaticamente, altrimenti dobbiamo istruirlo. Per esempio, usando il compilatore GCC, dopo aver incluso la libreria "SDL2", quando avviamo il compilatore da riga di comando scriveremo gcc main.c -o mioprogramma -lSDL2. È comunque necessario istruire il linker su quale directory deve lanciarsi a cercare la libreria voluta. Nei sistemi *NIX (Apple o Linux) di default tutte le librerie utente si trovano in /usr/lib, su Windows non è così semplice.
Dato che l'argomento librerie è piuttosto complesso è meglio che il lettore cerchi nel manuale del proprio compilatore.