Gli header file nel linguaggio C

Gli header file (o file di intestazione) sono librerie esterne ai programmi contenenti delle funzioni.

nomeheader.h

I file di intestazione hanno l'estensione .h

A cosa servono gli header file?

Mi permettono di definire una libreria di funzioni e richiamarla da più programmi senza doverle ridefinire ogni volta.

    Un esempio pratico

    Creo un file di intestazione contenente la funzione media.

    1. double media(float a, float b)
    2. {
    3. return (a+b)/2;
    4. }

    Per semplicità scrivo una sola funzione nel file di intestazione ma potrei aggiungerne molte altre.

    Salvo il file di intestazione con il nome libreria.h

    Nella stessa cartella creo un programma in C che richiama la libreria con l'istruzione #include.

    1. #include <stdio.h>
    2. #include "libreria.h"
    3. main()
    4. {
    5. double m;
    6. m=media(3,5);
    7. printf("La media è %f",m);
    8. return 0;
    9. }

    Nella riga 2 richiamo il file di intestazione libreria.h tramite l'istruzione di preprocessione #include.

    Il preprocessore aggiunge al programma tutte le funzioni contenute nella libreria. In questo caso è la sola funzione media().

    Nella riga 6 uso la funzione media() per calcolare la media tra due numeri 3 e 5.

    L'output del programma è

    La media è 4.000000

    L'header file mi permette di usare la funzione media() senza doverla definire all'interno nel programma.

    Nota. Una volta creata una libreria posso farla richiamare da tutti i programmi che voglio. Ad esempio, è utile creare una libreria personalizzata con le principali funzioni statistiche, matematiche o finanziarie e usarla ogni volta che serve.

    Esempio 2

    Per evitare che un file di intestazione sia caricato più volte da uno stesso programma, è buona norma aggiungere un'istruzione di controllo #ifndef / #endif nell'header file.

    L'header file del precedente esempio lo riscrivo in questo modo

    1. #ifndef _MEDIA_H
    2. #define _MEDIA_H
    3. double media(float a, float b)
    4. {
    5. return (a+b)/2;
    6. }
    7. #endif

    In questo modo il preprocessore include la funzione media() soltanto se non è già stata inclusa.

    E così via.


     
    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Libri di approfondimento

    Le funzioni in C