Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1714 connectés 

  FORUM HardWare.fr
  Programmation
  C

  communication entre 2 fichiers .c pas dans le meme dossier grace a un

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

communication entre 2 fichiers .c pas dans le meme dossier grace a un

n°1738757
maverick78​960
Posté le 29-05-2008 à 11:53:11  profilanswer
 

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. :sarcastic:  
 
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 :hello:


Message édité par maverick78960 le 29-05-2008 à 12:00:32
mood
Publicité
Posté le 29-05-2008 à 11:53:11  profilanswer
 

n°1738766
Elmoricq
Modérateur
Posté le 29-05-2008 à 12:00:15  profilanswer
 

Code :
  1. #include "fichier_secondaire.c"
 

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 :
  1. void main ()
 

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.


Message édité par Elmoricq le 29-05-2008 à 12:00:27
n°1738775
maverick78​960
Posté le 29-05-2008 à 12:04:13  profilanswer
 

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

n°1738777
Elmoricq
Modérateur
Posté le 29-05-2008 à 12:05:01  profilanswer
 

Les prototypes des fonctions implémentées dans source2.c

n°1738786
maverick78​960
Posté le 29-05-2008 à 12:07:37  profilanswer
 

j'obtiens les erreurs LNK2019 et LNK1120

n°1738789
Elmoricq
Modérateur
Posté le 29-05-2008 à 12:08:53  profilanswer
 

Tu es trop précis, là, pourrais-tu être plus vague ?

n°1738790
maverick78​960
Posté le 29-05-2008 à 12:09:34  profilanswer
 

trop précis sur les erreurs ?

n°1738797
maverick78​960
Posté le 29-05-2008 à 12:14:00  profilanswer
 

pour le moment j'ai
 
dossier 1
 
secondaire.h avec  

Code :
  1. void fct_calcul();


soit la déclaration de mon prototype
 
 
secondaire.c avec  

Code :
  1. void fct_calcul()
  2. {
  3. blablabla
  4. }


 
et le dossier 2 avec  
principal.c

Code :
  1. #include "../dossier1/secondaire.h"
  2. int main()
  3. {
  4. fct_calcul();
  5. }


Message édité par maverick78960 le 29-05-2008 à 12:22:46
n°1738812
maverick78​960
Posté le 29-05-2008 à 12:40:38  profilanswer
 

en fait j'ai trouvé en configurant les propriétés de visual
 
pour info :  
 
Properties -> Configuration properties -> C/C++ -> General -> Additional include directories

n°1738855
Elmoricq
Modérateur
Posté le 29-05-2008 à 13:40:14  profilanswer
 

[:romf]
 
(je ne peux pas t'aider sur Visual, je ne connais pas cet IDE)

mood
Publicité
Posté le 29-05-2008 à 13:40:14  profilanswer
 

n°1738874
maverick78​960
Posté le 29-05-2008 à 14:03:03  profilanswer
 

merci de ton aide Elmoricq


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  communication entre 2 fichiers .c pas dans le meme dossier grace a un

 

Sujets relatifs
Socket communication Appli Client/ServeurGérer des fichiers textes
freefile() et fichiers random sous .NET Compact ?BAT pour sélectionner fichiers ancien de + 1 mois
Syntaxe VBA pour copie entre fichiers XLTraitement des fichiers pdf en vbscript sur pdfcreator
Fonctionnement de l'api java comm pour communication avec ports sérieEchange de fichiers client-servlet
PHP - Maj automatique de nom de fichiers - soft ou scriptProblème installation libraire Java Communication
Plus de sujets relatifs à : communication entre 2 fichiers .c pas dans le meme dossier grace a un


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR