J'ai un projet qui comporte plusieurs fichiers sources, ainsi que des fichiers headers (.h) Mais comme ça fait un long moment que je n'y ai pas regardé, je suis un peu perdu pour la compilation. Le but était de permettre une compilation plus légère (pas d'obligation de recompiler le projet entier à chaque fois).
Par exemple dans mon fichier main.c je dois inclure des fonctions d'autres fichiers (video.c et lib.c), ces même fichiers possèdent des fichiers entêtes (.h). Si je ne me trompe pas les fichiers entetes doivent-être inclus dans leur fichier source respectif, puis les fichiers sources dans le fichiers source principal ?
Vous suivez toujours ?
[quote]si dans ton main tu utilises des fonctions de lib.c c dans ton main.c il faut que tu fasses #include "lib.h" [/quote]
oui et tu dois AUSSI le mettre dans lib.c evidement. En fait il faut le mettre partout où tu appelles des fonctions qui sont dans lib.c. Normalement si tu as bien fais ton .h, les fonctions et variables que tu as définies ne peuvent pas etre définies 2 fois (grace au #ifndef ...)
__________________________
L'élève heureux est celui qui, comme la rivère, suit son cours dans son lit.
Et n'oubliez pas :[b]Seb, c'est bien![/b]
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
exact ...
J'ai un autre prob, mes fichiers headers ne sont pas dans le même rep que mes sources donc pour les inclure, je fais #include <rep/header.h>, ça marche pas. Je les ai donc mises dans le même rep en les incluant différement #include "header.h" et bien ça ne change rien, à la compil j'ai des érreurs du style la fonction n'est pas reconnue etc ... quel peut être le prob ?
tu travailles avec quoi??? Et c'est quoi comme erreur?pas reconnue ou pas déclarée ta fonction ou Linke_error(ca je viens de m'en prendre 20 en une seule compilation ca fait peur...)?
Si t'as fait un projet, met tout dans le projet(les.h et .c), l'IDE (si t'en utilise un) fais tous les liens pour toi.
Petite chose qui m'est arrivé aussi avec Dev-cpp:
Qd tu fais un projet en C et que comme un boulet tu n'enregistres pas ton projet en C mais en C++, t'es obligé de décocher dans les options du projet, onglet fichier, "compiler en tant que C++".
Sinon ca fait des erreurs de linkage.
voila tiens nous au courant (pas trop d'amperes qd mm hein?.... désolé pour cette vanne pourrie....)
__________________________
L'élève heureux est celui qui, comme la rivère, suit son cours dans son lit.
Et n'oubliez pas :Seb, c'est bien!
C'est pas grave sebsheep ça m'arrive aussi
En fait ce projet je travaille sous linux, avec un éditeur de texte tout bête qui me colorie quand même la syntaxe, et dérrière j'utilise gcc pour compiler !
Alors l'érreur ça donné quelque chose comme "first use of this function" donc c'est undeclared si mes souvenirs sont bons !
dans CHAQUE .c dans le quel tu utilises ces fonctions...
C'est a dire : si tu l'as fait dans ton main.c et que t'as un autre fichier "fichier1.c" dans le quel tu utilises tes fonctions qui sont dans "monheader", il faut aussi le faire dans fichier1.
t'as fait ca??
Si ca marche pas ben je vois qu'une solution : la fenetre du 4eme étage (pour le pc, ou pour toi, c'est toi qui décide)
__________________________
L'élève heureux est celui qui, comme la rivère, suit son cours dans son lit.
Et n'oubliez pas :Seb, c'est bien!
Ca en est ou?
si tu déclares une fonction f dans un fichier fonc.h
il faut faire :
#include "fonc.h"
dans chaque fichier ou tu te sers de f ...
si fonc.h est dans un sous-dossier de là ou est le fichier dans lequel tu inclus, il faut faire :
#include "sous_dossier/fonc.h"
Exemple concret ...
Tu bosses sur un projet à plusieurs et tout, toi tu t'occupes de la partie graphique ... tu as un dossier "fonctions_graph" pour mettre tes .h et .c avec tes fonctions graphiques ....
Dans le fichier principal si tu veux t'en sevir, tu fais :
#include "fonctions_graph/fonc.h"
// ...
f(23,"Hello");
Sinon :
Il ne faut pas compiler les .h, seulement les .c, puis compiler tous les .o des .c à la fin, sans oublier chaque fois que besoin est de lier des librairies.
__________________________
Be C++ Mon Blog (C++, Intelligence Artificielle, Prolog)
Ah d'accord, je pensais que "dossier/func.h" ne fonctionnerai pas ... J'ai besoin d'une précision sur la compilation. D'abord je fais gcc -c source1.c source2.c pour transformer les fichier en fichier objet ? Et après là je ne suis plus trop sur de moi...
en gros c'est tout con, dans tes .h tu fous les prototypes de tes fonctions, et dans les .c leurs codes.
__________________________
Spirit - modérateur casu ^-^'