Utilisation des fichiers h (header)

Introduction
Dans l'article "Led Class - Part 1", j'ai fournis en exemple le premier prototype des fonctions que j'utiliserai plus tard pour construire ma classe Led.
Philomenale me faisait remarquer à juste titre qu'un fichier .h ne doit pas contenir de définition de fonction.
Comme mes connaissances C datent un peu, je suis parti glaner quelques informations en vue de faire les corrections appropriées.

Qu'est-ce qu'un fichier H?
Je reprends ici le texte publié sur un fil de discussion de CommentCaMarche.net.

h c'est le diminutif de header (en-tête).
Un fichier header c'est là qu'on defini habituellement le prototype des fonctions. C'est aussi là que sont définis/énoncés les types personnalisés, les structures, les classes, et des constantes globales.

A quoi cela sert-il?
Premièrement à mieux s'y retrouver, on trouve la référence de ce qu'il y a dans un fichier c ou cpp dans le header qu'il inclut.

Deuxièmement, cela permet de signaler l'existence d'une fonction pour l'utiliser avant de l'avoir définie.

Exemple:
Protoype d'une fonction bidule dans le fichier header:
void bidule(char *truc);

Si cette fonction est dans le header d'un fichier c (donc dans un fichier *.h inclus dans le fichier c), alors il est possible d'utiliser cette fonction même si sa définition est faite plus bas dans le fichier c voire encore dans un autre fichier c (lié avec le fichier header).
La définition de la fonction peut donc se retrouver ailleurs:
void bidule(char *truc)
{
        printf("%s",truc);
}
  

Le fichier header doit débuter comme ceci :
#ifndef nom_du_fichier.h
#define nom_du_fichier.h

et se terminer comme ceci :
#endif

Il peut ensuite être intégré au fichier cpp (c++) ou c (c standard) en écrivant :
#include "nom_du_fichier.h"

Le contenu entre les guillemets ("nom_du_fichier.h") dépend de l’endroit où se trouve le fichier header.
Il doit être absolument être disponible depuis le dossier du projet.

Références