Slt lorsqu’on ecrit un programme les structures qu’on a crée doivent être présente dans chaque fichiers où on les réclame ou simplement dans un fichier .h?
merci
Slt lorsqu’on ecrit un programme les structures qu’on a crée doivent être présente dans chaque fichiers où on les réclame ou simplement dans un fichier .h?
merci
Dans un joli fichier h :Envoyé par hunter99
Jc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #ifndef H_MASTRUCTURE #define H_MASTRUCTURE typedef struct sExemple { int unentier; }SExemple; #endif
on n'ajoute pas les biblio classique (stdio & co) dans les fichier .h ?
qcq ça veut dire#ifndef H_MASTRUCTURE
#define H_MASTRUCTURE
............................
#endif?
thx
Ca depend si t'en a besoin dans plusieurs sources ou pasEnvoyé par hunter99
Quand on fait une structure, on fait aussi les fonctions qui permettent de les manipuler. l y a de fortes chances que ces fonctions soient dans un .c séparé et qu'il y ait donc un .h pour les prototypes.Envoyé par hunter99
Ces prototypes ayant besoin des définitions des structures pour leurs paramètres, la définitions des-dites structures se trouvera tout naturellement dans ce .h...
simple bon sens...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #ifndef H_XX #define H_XX /* xx.h */ struct xx { int x; int y; }; void xx_a (struct xx *p, int x); void xx_b (struct xx *p, int y); #endif /* guard */
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 /* xx.c */ #include "xx.h" void xx_a (struct xx *p, int x) { } void xx_b (struct xx *p, int y) { }
On les inclut uniquement dans les headers qui en ont besoin. En général, ça se limite à <stddef.h> (size_t) ou <stdio.h> (FILE) etc.Envoyé par hunter99
Pour savoir si on en a besoin une bonne règle de codage est d'inclure ce header en premier dans le[s] .c correspondant[s].
http://emmanuel-delahaye.developpez.com/codage.htmEnvoyé par hunter99
à lire de A à Z...
euh dsl j’ai pas bien compris, supposons que j’ai calcul.c ,calcul.h ,traitement .c,traitement.h et structure.h et les fonctions dans calcul.c et traitement.c utilise les biblio standards et les structures de strucutre.h .
Je fais un #include « structure.h » dans quels fichiers ?Les bibilio standards c’est a mettre dans quels .c ou les .h?
merci![]()
Partout où c'est nécessaire. Evidemment, il doit y avoir une protection contre les inclusions multiples, comme déjà indiqué... Montre ton code.Envoyé par hunter99
En supposant que tu parles des fichiers d'en-têtes de l'implémentation (les <*.h>), Partout où c'est nécessaire. Montre ton code.Les bibilio standards c’est a mettre dans quels .c ou les .h?
Tu fais comme ça :
1 - supprimer (provisoirement) les entêtes dans tous les fichiers.
2 - Dans calcul.c, inclure calcul.h (en premier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #if 0 #include <...> #endif
3 - Compiler.
4 - Tant qu'il manque quelque chose dans calcul.h, compléter, compiler
5 - Tant qu'il manque quelque chose dans calcul.c, compléter, compiler
idem avec traitement.c ...
NOTA : ne tenir compte que de la première erreur évidemment (le 200 suivantes n'ont aucun intérêt).
Soit un projet contenant 3 fichiers:
- main.c (fichier principal du programme, contient la fonction main)
- fonctions.c
- fonctions.h
main.c est le fichier suivant:
Le fichier fonctions.h déclare les fonctions copier() et afficher(). La fonction copier utilise le type size_t dans son interface, il faut donc inclure stddef.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /* main.c */ #include <stdlib.h> #include "fonctions.h" int main(void) { char s_tampon[30] = {0}; copier(s_tampon, sizeof tampon, "Salut!"); afficher(s_tampon); return EXIT_SUCCESS; }
Maintenant, voici le fichier fonctions.c où sont définies les fonctions copier() et afficher(). Ces fonctions utilisent les fonctions puts() et strncat de la bibliothèque standard. Il faut donc inclure stdio.h et string.h. Il vient donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /* fonctions.h */ #ifndef H_TC_FONCTIONS__ #define H_TC_FONCTIONS__ #include <stddef.h> void afficher(char const *chaine); void copier(char *tampon, size_t taille_tampon, char const *chaine); #endif /* guarde d'inclusion H_TC_FONCTIONS__ */
Thierry
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 /* fonctions.c */ #include <stdio.h> #include <string.h> #include "fonctions.h" void afficher(char const *chaine) { puts(chaine); } void copier(char *tampon, size_t taille_tampon, char const *chaine) { if (tampon != NULL && chaine != NULL) { *tampon = 0; strncat(tampon, chaine, taille_tampon - 1); } }
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Partager