Les headers ou les fichier .h

Résolu
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014 - 23 nov. 2010 à 23:48
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014 - 28 nov. 2010 à 17:40
salut a tous
une petite question apropos des headers ou les fichiers .h

est ce que je dois les inclure dans les fichiers .c ou le fichier main.c ???
une petite explication sil vous plais je suis débutant et j aimerai bien savoir
a ce que je sais il contiens les prototypes des fichiers correspondante si le fichier s'appelle fiche.c le headeur s'appel fiche.h alors pour quoi inclure le fichier fiche.h dans le fiche.c ???
je me trompe ou on l'inclure que dans le main.c ???

merci pour votre aide
A voir également:

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
24 nov. 2010 à 10:27
Tu inclus tes fichiers .h, uniquement là ou tu en as besoin. Tout simplement.

C'est une bonne pratique que d'avoir un fichier header par fichier de code, mais ce n'est pas obligatoire.

Si tu as un fichier toto.c et un header toto.h, tu n'es pas obligé d'inclure toto.h dans toto.c, sauf si une fonction de toto.c fait appel à une fonction présente dans ce fichier.
Pour qu'une fonction "voit" une autre fonction, il faut soit: qu'elle soit "en dessous" de la fonction à appeler ou alors que cette fonction soit déclarée.

D'une manière générale, on inclus le fichier header dans le fichier de source, mais aussi dans le fichier ou tu en as besoin (ici main.c).

Pour résumé, si tu ne veux pas te prendre la tête, tu peux faire:
fichier.c => include fichier.h
main.c => include fichier.h

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
24 nov. 2010 à 21:11
Si tu comptes utiliser la proposition de "CptPingu", penses quand même, pour eviter les doubles déclarations, à mettre en oeuvre une structure de la forme :

#ifndef _MY_FILE_H_ //Debut du fichier H
#define _MY_FILE_H_ 1
//La suite de ton fichier H
#endif //Fin du fichier H


Voila (;
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
24 nov. 2010 à 22:57
Salut,

C'est une bonne pratique que d'avoir un fichier header par fichier de code, mais ce n'est pas obligatoire.

Perso je trouve ce point très discutable, d'après moi c'est fonction de la manière dont on répartis ses fonctions dans les .c. En effet, quelqu'un qui as l'habitude de remplir ses .c de toutes les fonctions autour d'un même thème (ou partie du projet) trouvera ça très bien. Cependant, perso je suis adapte du "une seule fonction exportée par fichier" ; donc pour les petits projets un header pour tout me semble largement suffisant, pour les plus gros je penche plus pour un header par "partie" du projet (reste à définir les différentes parties, souvent la même chose que les différents).

Si tu as un fichier toto.c et un header toto.h, tu n'es pas obligé d'inclure toto.h dans toto.c, sauf si une fonction de toto.c fait appel à une fonction présente dans ce fichier.

Si on veux repartir sur les bonnes pratiques :
- Chaque fichier comprend au moins une fonction exportée.
- Chaque fonction exportée doit être déclarée avant d'être définie (-Wmissing-declarations avec gcc pour sortir le warning adapté)
- La déclaration des fonctions se fait dans le .h (concernant les fonctions de foo.c on le fait dans foo.h)
Ceci implique donc d'inclure foo.h dans foo.c

penses quand même, pour eviter les doubles déclarations

C'est une très bonne chose en effet, cependant ce que tu propose est à éviter à tout prix : les identifieurs débutant par un underscore sont réservés ! Le mieux est d'enlever l'underscore au début et à la fin de ta macro :
#ifndef MY_FILE_H
#define MY_FILE_H
//La suite de ton fichier H
#endif /* !MY_FILE_H */

Plus de détails : DCL37-C. Do not use identifiers that are reserved for the implementation
3
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014
28 nov. 2010 à 17:34
merci bcp a vous les gars
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le1scorpion1noir Messages postés 162 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 26 août 2014
28 nov. 2010 à 17:40
donc pour les petits projets un header pour tout me semble largement suffisant, pour les plus gros je penche plus pour un header par "partie" du projet (reste à définir les différentes parties, souvent la même chose que les différents).


la je suis de la même avis que toi
0
Rejoignez-nous