Zerosquare (./2) :
Je ne sais pas trop si le préprocesseur détecte ça, ni même s'il est supposé le faire (théoriquement, on pourrait faire un fichier include qui se comporte différemment suivant le nombre de fois où il est inclus, même si je n'ai pas d'exemple réel en tête).
Si tu ne met pas de #ifndef/#define soit tu va avoir une erreur de trop de #include imbrique, soit des erreurs de clash de redefinition & co.
Sinon le coup du .h qui fait des choses differentes si il est inclus plusieurs fois, ya des header comme ca ici au boulot, c'est vraiment moche...
#ifndef FIRST_INCLUDE
# define FIRST_INCLUDE
[blabla]
#else /* FIRST_INCLUDE */
# ifndef SECOND_INCLUDE
# define SECOND_INCLUDE
[blabla2]
# else /* SECOND_INCLUDE */
# ifndef THIRD_INCLUDE
# define THIRD_INCLUDE
[blabla3]
# endif /* THIRD_INCLUDE */
# endif /* SECOND_INCLUDE */
#endif /* FIRST_INCLUDE */