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

le1scorpion1noir 163 Messages postés samedi 19 janvier 2008Date d'inscription 26 août 2014 Dernière intervention - 23 nov. 2010 à 23:48 - Dernière réponse : le1scorpion1noir 163 Messages postés samedi 19 janvier 2008Date d'inscription 26 août 2014 Dernière intervention
- 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
cptpingu 3822 Messages postés dimanche 12 décembre 2004Date d'inscription 28 septembre 2018 Dernière intervention - 24 nov. 2010 à 10:27
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

Merci cptpingu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cptpingu
Meilleure réponse
didoux95 845 Messages postés mardi 25 avril 2006Date d'inscription 1 août 2017 Dernière intervention - 24 nov. 2010 à 21:11
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 (;

Merci didoux95 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de didoux95
Meilleure réponse
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 24 nov. 2010 à 22:57
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

Merci TychoBrahe 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

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