Envoyé par
razily
mais c'est vrai !! c'est tellement difficile de détecter une erreur comme çà vu qu'il y a plusieurs fichiers !! maintenant quand j'execute y a ces erreurs:
1 2 3 4 5
|
/tmp/ccIDT8db.o: In function `main':
sans_titre.c:(.text+0x7c): undefined reference to `mafonctionsomme'
sans_titre.c:(.text+0xa4): undefined reference to `mafonctiondifference'
Compilation échouée. |
et quand j'ai essayé de changer le #include"fonction.h" par "fonction.c" çà marche et je ne comprends plus s'il faut insérer le .h ou le .c dans main !!
j'ai vu sur le site qu'il insère le headers .h dans main !!
est ce que quelqu'un peut m'expliquer cela ??
Facile !!!
Dans ton .h, tu définis un(des) prototype(s)
Mais comme tu ne les définis pas comme "extern", le linker s'attend à les trouver dans le module où ils sont déclarés.
En incluant "fonction.h" dans "fonction.c", tu "écrases" les déclarations.
En incluant "fonction.h" dans "main.c", tu déclares juste.. mais il n'y a pas de fonctions correspondantes..
Si tu fais :
fonction.h
extern int mafonction..();
main.c
fonction.c
rien (ou l'inclusion si tu veux, mais pas recommandé)
ça va marcher (à condition de lier avec le .o)
Partager