communication entre 2 fichiers .c pas dans le meme dossier grace a un - C - Programmation
Marsh Posté le 29-05-2008 à 12:00:15
Code :
|
Non. Pas d'inclusion de code directement. Pour être propre, il faut passer par l'édition d'un fichier en-tête, par exemple "fichier_secondaire.h", qui recensera les prototypes des fonctions implémentées dans le .c
Code :
|
Non plus. Les deux seuls prototypes standards de main() sont :
int main(void);
et
int main(int, char**);
Ensuite, pour ta question, c'est simple.
Mettons la configuration suivante :
DIRA/source1.c
DIRB/source2.c
DIRB/source2.h
Tu vas écrire dans source1.c :
#include "source2.h"
Et à la compilation, tu écriras (avec gcc, sur un autre compilateur regarde la documentation correspondante) :
gcc -c source2.c
gcc -I DIRB -c source1.c
gcc -o <nom de l'executable final> DIRA/source1.o DIRB/source2.o
Le paramètre -I permet d'indiquer au compilateur un répertoire supplémentaire dans lequel rechercher les fichiers en-têtes.
Marsh Posté le 29-05-2008 à 12:04:13
merci de ta réponse rapide mais j'ai pas compris ton dernier paragraphe, surement parce que je suis sous visual.
Tu vas écrire dans source1.c :
#include "source2.h"
ca ok mais pour le "source2.c" je suppose que je change rien, et dans le "source2.h" je met quoi ?
merki
Marsh Posté le 29-05-2008 à 12:14:00
pour le moment j'ai
dossier 1
secondaire.h avec
Code :
|
soit la déclaration de mon prototype
secondaire.c avec
Code :
|
et le dossier 2 avec
principal.c
Code :
|
Marsh Posté le 29-05-2008 à 12:40:38
en fait j'ai trouvé en configurant les propriétés de visual
pour info :
Properties -> Configuration properties -> C/C++ -> General -> Additional include directories
Marsh Posté le 29-05-2008 à 13:40:14
(je ne peux pas t'aider sur Visual, je ne connais pas cet IDE)
Marsh Posté le 29-05-2008 à 11:53:11
salut a tous
voila mon petit souci
j'ai un fichier .c qui appelle dans son main une fonction "fct_calcul()" située dans un autre fichier .c
fichier_principal.c
#include "fichier_secondaire.c"
...
void main ()
{
fct_calcul()
}
fichier_secondaire.c
"void fct_calcul()
{
blablabla
}
jusque là pas de souci a la compil
maintenant ce que je voudrais, c'est placé mon fichier principal dans un dossier et le secondaire dans un autre et relayer l'appel de la fonction par un fichier .h situé entre les 2 dossier
dossier
relais.h
--> rep1
-->principal.c
--> rep2
-->secondaire.c
comment faire ? on m'a parlé d'une fonction utilisant "extern", j'ai aussi testé en déclarant le prototype de ma fonction dans le .h mais ca marche pas.
on m'a aussi parlé de modifier les propriétés en "forcant les include" avec /FI dans les paramètres C/C++mais j'ai pas reussi a le faire fonctionner.
merci à tous ceux qui m'aideront
Message édité par maverick78960 le 29-05-2008 à 12:00:32