Je n'ai pas bien compris les includes. Mon projet contient 3 fichiers : main.c, fonctions.c et fonctions.h. D'après ce que j'ai appris, j'organise de manière suivante :
`main.c`:
``` #include "fonctions.h"; ... int main() maFonc();
... ```
`fonctions.h`:
``` ... void maFonc(); ...
`fonctions.c`:
void maFonc(): ...
```
Mais ça ne se compile pas : "Undefined reference to maFonc()..."
Alors intuitivement j'ajoute dans `fonctions.h`:
``` #include "fonctions.c" ```
alors ça marche !
Ainsi j'ai 3 questions:
- Faut-il inclure les .c dans les .h ? - Combien de .c, combien de .h ? - Y a t il une convention de nommage des .c et .h (faut-il que chaque .c a un .h correspondant) ?
Le fichier fonctions.c fait déjà partie du projet.
En effet, j'utilise Code-Blocks sous Xubuntu. Quand je clique droit sur fonctions.c, je peux choisir "Remove from project", donc je présume qu'elle fait partie du projet.
Je viens de trouver une solution : inclure fonctions.h dans fonctions.c, puis fonctions.c dans main.c :
fonctions.h --> fonctions.c --> main.c
Cela revient au même que d'inclure fonctions.c --> fonctions.h --> main.c : à la fin le code de main.c avant la compilation est le même dans les deux cas.
Si je ne fais que fonctions.h --> main.c, ça ne marche pas ni en IDE ni en terminal.
Le fichier fonctions.c doit être indiqué comme devant être compilé. Je ne connais pas code::block il doit y avoir un endroit où on demande la compilation.
je viens d'essayer et la fonction n'est pas reconnue en effet.
J'ai essayé une simple compilation de de fonctions.c et code blocks m'a averti que ce fichier ne faisait pas partie du projet. Je l'ai donc retiré, puis ajouté (idem pour fonctions.h, on ne sait jamais) et tout baigne maintenant le programme s'exécute enfin.
suite à ta remarque, j'ai vérifié et en effet, fonctions.c n'a aucun target : ni debug ni release, même s'il l'appartient au projet.
Je n'avais pas de notion sur ces "target" quand j'ai créé le fichier, je me rappelle que je n'ai coché aucun target du coup.
Pour l'ajouter, pas besoin de l'enlever du projet, dans Code block, il suffit de cliquer droit sur le fichier, puis Properties, puis build, puis cocher Debug et Release.
J'ai toutes les réponses à mes questions maintenant. MERCI !
L'avantage d'un IDE, c'est la simplicité d'utilisation du debugger.
Lorsqu'on débute, c'est quand même intéressant de tracer l'exécution de son programme. Le debugger en ligne de commande est un peu rédhibitoire pour démarrer.
Header file.h
× 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.
En recherche d'emploi.