Projet pour travail en groupe

Davy8x Messages postés 13 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 27 juin 2006 - 27 juin 2006 à 00:37
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 27 juin 2006 à 20:40
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

wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
27 juin 2006 à 01:03
ben tu les ajoutes au projet , et puis, tu inclu a main.cpp leur .h qui  contient les prototypes. c tout.
0
wxccxw Messages postés 755 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 30 janvier 2011
27 juin 2006 à 01:07
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 juin 2006 à 01:43
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
0
Davy8x Messages postés 13 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 27 juin 2006
27 juin 2006 à 12:04
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 juin 2006 à 16:27
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
0
Davy8x Messages postés 13 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 27 juin 2006
27 juin 2006 à 20:15
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
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
27 juin 2006 à 20:40
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 ?
0
Rejoignez-nous