Projet pour travail en groupe

Signaler
Messages postés
13
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
27 juin 2006
-
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
-
J'utilise DevC++ et je voudrais découpper un programme en plusieurs fichiers.
Ces fichiers utiliseraient les même variables.
J'ai fait beaucoup d'essaies ( variable extern, fonction inline dans un .h,... )mais je n'arrive pas, à faire quelque chose qui marche.

un exemple bidon :

Dans le programme principale:
main()
{
       initialisation();
       affichage();
       collision();
}

Ces 3 fonctions seraient dans d'autres fichiers mais utiliseraient les mêmes variables.

Merci d'avance pour votre aide.

7 réponses

Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

ben tu les ajoutes au projet , et puis, tu inclu a main.cpp leur .h qui  contient les prototypes. c tout.
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

par exemple :
fonction.h contient le proto de notre fonction donc : int create(char * i);
puis fonction.cpp tu #include "fonction.h", tu met le vrai corp :
int  create(char * i)
{
return 1;
}

puis pour utiliser create dans ton main.cpp tu ajoute au projet fonction.h et .cpp puis dans main.cpp tu  #include "fonction.h"  et donc tu  peux utiliser create() dans ton main.cpp
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Il veut que ses trois fonctions utilise la même variable. Si ce que BruNews ta recommendé n'a "pas fonctionné" et que c'est absolument nécessaire, bien tu peux toujours passer cette variable en paramètre. Par exemple, tes 3 fonctions utilise dison variable1 donc:

Par exemple:

main()
{
       int variable1 = 0;

       initialisation(&variable1); //Va transmettre une valeur à variable1
       affichage(variable1); //Va afficher variable1
       collision(variable1);  //Detecte un collision
}

Sinon, les extern sont le seul moyen. Si ça ne fonctionne pas c'est que tu ne les utilises pas de la bonne façon. Les extern sont très facile à utiliser reprenon l'exemple de variable1:

// Dans ton fichier main.c
int variable1 = 0; // C'est une variable globale

int main ()
{
    ...
}

// Dans ton fichier contenant tes fonctions qui va s'appeller disons fonction.c
extern int variable1; // Encore une fois déclaré en variable globale

void initialisation ()
{
    int test = variable1;
    ...
}

void affichage ()
{
    int affich = variable1;
    ..
}
etc...

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
13
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
27 juin 2006

Quand j'utilisais les variables externes comme tu l'as dit le compilateur rapporte des erreurs dans le Linker, d'où peut venir ce problème ?
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
C'est la facon dont tu les utilises. Montre moi le bout de code où tu définie un extern et ou tu l'utilise.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
13
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
27 juin 2006

Ho ! c'est super !!! en nétoillant le code pour te l'envoyer... ça l'a fait marché c'est magnifique 2 jours de recherche pour ça !!!

Donc le problème que j'avais c'est que je faisais la 1ère definition (celle sans le "extern") dans une fonction alors qu'il fallait la mettre en dehors !

Merci beaucoup pour ton aide
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
3
je te l'aivais expliqué dans l'autre topic


tu fais un fichier my_var.h


#ifndef MY_VAR_H

#define MY_VAR_H

extern int my_var;

#endif


et un my_var.c


#include "my_var.h"

int my_var = 0;


tu ajoute my_var.c a ton projet et tu inclus my_var.h dans tout les sources ou tu en as besoin, c'est si compliqué que ca ?