Les headers ou les fichier .h [Résolu]

Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
- - Dernière réponse : le1scorpion1noir
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
19 novembre 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de cptpingu
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Dernière intervention
1 août 2017
3
Merci
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 (;

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de didoux95
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Dernière intervention
5 juin 2013
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de TychoBrahe
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
0
Merci
merci bcp a vous les gars
Commenter la réponse de le1scorpion1noir
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Dernière intervention
26 août 2014
0
Merci
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
Commenter la réponse de le1scorpion1noir

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.