Bonjour tout le monde,
Voilà je débute en C (avec Code::Blocks, sous windows, utilisant gcc) et je suis en pleine écriture de mon premier programme modulaire. Et à cette occasion je me rend compte que je n'ai probablement pas compris comment fonctionnait les header... (malgré qqs lectures qui me semblaint avisées.....)
En effet jusque là je faisait des #include "header.h" au début de mes fichiers d'instructions, le header contenant les prototypes des fonctions qui seront utilisées dans le code en cours d'écriture, les fonctions étant définies dans le fichier .c correspondant au .h.
J'avais cru comprendre qu'il suffisait d'inclure le .h et qu'après le linker se débrouillait pour combiner les .c et ainsi inclure toutes les fonctions au sein du programme .exe final.
Mais voilà-t-y pas que, maintenant mes fonctions écrites, je m'attaque au main.c et fait donc pour la première fois appel a des fonctions situées dans un autre .c. Et là cata-schtroumpf, à chaque appel de fonction le compilo me renvoi l'erreur undefined reference to 'fonction()', qu'il semble pourtant bien connaitre puisqu'il y adjoint la liste correcte des arguments entre les parenthèses.
Et le problème semble se résoudre si j'#include à la main le fichier .c contenant les fonctions proprement dites, en plus du .h...
Inclure le .h ne suffit donc t-il pas?
Partager