Le principe est le suivant: si 2.c utilise des fonctions se trouvant dans 1.c, alors 1.h doit être inclus dans 2.c
A noter que si des fonctions de 1.c appellent des fonctions de 1.c, il n'est pas nécessaire que les fonctions appellées soient indiquées dans 1.h (sauf si elles sont immédiatement appelables par 2.c)
- Edité par edgarjacobs 25 mars 2022 à 16:59:13
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Depuis main.c je n'utilise pas directement les fonctions de fonctions.c mais seulement les fonctions présentent dans application.c
Je sais déjà que je devrai mettre un #include "application.h" dans le main.c
C'est bien cela !
ATGC a écrit:
Dans le dossier application.c j'utilise des fonctions présentent dans le fichier fonctions.c ...
Est-ce que je dois faire un #include " fonctions.h" dans application.c? (comme on le ferait dans main.c)
Oui, vu que tu utilise les fonction de fonction.c dans application.c
ATGC a écrit:
Depuis main.c je n'utilise pas directement les fonctions de fonctions.c ...
Est-ce que je dois aussi mettre un #include "fonctions.h" dans main.c ou cela n'est pas nécessaire si je l'ai mis dans application.c?
Non, puisque tu n'utilise pas les fonctions de fonction.c dans main.c
ATGC a écrit:
Mais si on a un troisième fichier 3.c qui utilise des fonctions se trouvant seulement dans 2.c, doit-on aussi inclure 1.h dans 3.c?
Non, tu utilises les fonctions de fichier2.c alors tu n'inclus que fichier2.h , tu n'utilise pas les fonctions de fichier1c alors pas d'include fichier1.h
Est-ce que tu fais des compilations séparées et le link à la fin? Une bonne pratique est de protéger les header de définitions multiples. Exemple Dans un fichier tata.h: #ifndef TATA_H #define TATA_H ... texte du header #endif || TATA_H Comme ça si tu le mets à un endroit non approprié, tu n'auras pas de duplication de définitions, etc.
Le Tout est souvent plus grand que la somme de ses parties.
Quand un fichier 3.c utilise seulement indirectement des fonctions de 1.c, il ne faut pas inclure le 1.h dans 3.c.
3.c n'a pas besoin de 1.h, il n'appelle pas les fonctions se trouvant dans 1.c, même indirectement. Dans l'exemple, c'est 2.c qui appelle les fonctions de 1.c
D'ailleurs, lorsque 3.c appelle une fonction de 2.c, il se moque pas mal de ce qui se passe dans la foncton appellée, pour 3.c , c'est le résultat qui compte. C'est comme toi quand tu appelles printf(), tu t'en balances de savoir comment elle fait le job ni quelles fonctions elle appelle, pour toi c'est le résultat qui compte.
- Edité par edgarjacobs 25 mars 2022 à 19:28:55
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
fonctions dans une fonction, et headers
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent