Probleme compilation pour programme fragmenté [Résolu]

Probleme compilation pour programme fragmenté [Résolu] - C - Programmation

Marsh Posté le 03-07-2004 à 11:15:15    

Hello World !  :pt1cable:  
 
Voila une introduction au sujet qui convient parfaitement ici  :pt1cable:  
 
N'est-ce pas la premiere chose que l'on voit lorsque on decouvre le monde du C ?  :whistle:  
 
Bon venons en a mon probleme  :sarcastic:
 
J'ai programmé un jeux rpg en mode console (et ouais, la couleurs, les maps avec le scroll, les monstres ^^ les quetes) lol enfin je me fait trop chier  :pt1cable:  mais c trop fun msdos (enfin le mode console)  :ange:  
 
heu donc voila vu que c un rpg, vous vous doutez bien que mon code comporte un grand nombre de procedure... et voila g voulu les separer de ma feuille MAIN.C pour en faire des feuille genre MONSTRE.c, MENU.C, AFFICHAGE.C etc etc...
 
 :cry: mais maintenant il me sort un probleme tout con lors de la compilation  :cry:  
 
jvous explique donc ce probleme (tout con, euh jlai deja dit  :cry: )
il me dit que dans le fichier AFFICHAGE.C le tablea MONSTRE n'est pas declarer....
HORS mon tableau MONSTRE est declarer dans mon MAIN.c parceque ct une variable global lorsque mon code etait dans la meme feuille ...
 
donc maintenant il veut que je REdeclare mon tableau dans AFFICHAGE.C ...  :cry:  mais si je fais ca.... le tableau dans MAIN.C et dans AFFICHAGE.c seront different !!! Breff!!
 
Je pige pas pourquoi il veut pas compiler !!!!!! il faut quand meme pas redeclarer toutes les variable globale du MAIN.c ???!!!!
 
sinon je ne voit pas l'utilité de segmenté un programme...  :cry:  
 
bouuuh je suis nulll aidez moi  :kaola:  
 
 :hello:


Message édité par Profil supprimé le 04-07-2004 à 12:09:15
Reply

Marsh Posté le 03-07-2004 à 11:15:15   

Reply

Marsh Posté le 03-07-2004 à 11:21:17    

ta variable globale dans main.c
 
char *monstre
 
dans monster.c
 
extern char *monstre
 
comme ca il va ller le chercher a l exterieur..
apres tu peu te faire un fichier extern.c avec toutes tes variables gloables et un fichier extern.h que tu inclus a tous les fichiers suaf extern.c .. dans ce .h tu met les declarations sous la forme "extern .." , comme ca elles seront modifiables ds chaque fichier..

Reply

Marsh Posté le 03-07-2004 à 11:37:28    

:lol:  
 
Voila je me suis toujours demander ce que c'etait EXTERN
 
bon et biens parfois des problemes sont vraiment des problemes betes...
 
J'orai penser a plus compliquer mais voila... on resout tout d'un simple petit mot reservé dont on ignorais sa fonction  :cry:  
 
Merci pour cette reponse rapide et pour les conseils  :hello:

Reply

Marsh Posté le 03-07-2004 à 11:44:10    

DeirElBahri a écrit :

apres tu peu te faire un fichier extern.c avec toutes tes variables gloables et un fichier extern.h que tu inclus a tous les fichiers suaf extern.c .. dans ce .h tu met les declarations sous la forme "extern .." , comme ca elles seront modifiables ds chaque fichier..

les globales, c'est déjà suffisemment le bordel au niveau des collisions, c'est un très mauvais conseil de tout mettre dans un même .h
 
segmente au maximum !

Reply

Marsh Posté le 03-07-2004 à 11:58:15    

Les variables globales, c'est mal!
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-07-2004 à 12:38:51    

Sans blague ! ...  :pt1cable:

Reply

Marsh Posté le 03-07-2004 à 12:39:29    

Oui, sans blague!
Par contre, des variables a visibilite controllée et avec des accesseurs, c'est bien.
A+,


Message édité par gilou le 03-07-2004 à 12:42:42

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-07-2004 à 13:00:57    

Ouis je veux bien le croire que c'est mal, mais ceci dit vaut mieux une variable global que toujours faire passer cette variable en argument a + de 50 fonctions ^^
 
ou je me trompe oO

Reply

Marsh Posté le 03-07-2004 à 15:27:57    

Tu te trompes en effet. Si tu as 50 fonctions qui ont besoin de changer la valeur d'une variable, alors certainement que c'est codé comme une savate. Et les accesseurs ne sont pas faits pour les chiens.
A+,


Message édité par gilou le 03-07-2004 à 15:28:53

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-07-2004 à 15:46:51    

gilou a écrit :

Les variables globales, c'est mal!


c'est ce que je pense tous les jours en voyant mon chef de projet :jap:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 03-07-2004 à 15:46:51   

Reply

Marsh Posté le 03-07-2004 à 21:42:46    

drasche a écrit :

c'est ce que je pense tous les jours en voyant mon chef de projet :jap:


 
 
je ne programme qu'avec des goto et des variables globales


Message édité par farib le 03-07-2004 à 21:43:29

---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 04-07-2004 à 01:53:38    

Je ne sais pas c'est quoi des accesseurs ^^
 
mais bon je m'adresse peut être a une mauvaise personne la... vu comment celle ci répond je crois qu'on avance a rien
 
cette personne se reconnaitra et puis la pauvre.. elle doit avoir des problemes en ce moment je la comprend :/
 
bon courage Gilou
@+

Reply

Marsh Posté le 04-07-2004 à 03:04:15    

bref si ton code est propre les globales c'est pas la mort, ni les statiques, ni les breaks.. t auras tjrs des gens qui te dirons que ce que tu fais est mal parcequ'ils ont deja testé et que ca marchait pas, a cause de leur code..

Reply

Marsh Posté le 04-07-2004 à 08:56:28    

DeirElBahri a écrit :

bref si ton code est propre les globales c'est pas la mort, ni les statiques, ni les breaks.. t auras tjrs des gens qui te dirons que ce que tu fais est mal parcequ'ils ont deja testé et que ca marchait pas, a cause de leur code..

Y'a des circonstances qui justifient les emplois de chacun de ces trucs, mais il faut savoir reconnaitre ce type de circonstance (par exemple, des goto dans un automate a etat fini peuvent optimiser un code beaucoup plus lourds a ecrire sans) et surtout pas aller employer les globales a tout bout de champ.
Vas un jour maintenir un programme de plusieurs centaines de milliers de lignes, avec plusieurs centaines de globales, et tu comprendra ton malheur! J'ai deja rencontré ca cas (programme ecrit par d'ex programmeurs basic rapidement reconvertis au C, pas de doc, programmeurs partis dans d'autres equipes...)  
A+,


Message édité par gilou le 04-07-2004 à 08:59:50

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-07-2004 à 09:11:37    

yoskeletone a écrit :

Je ne sais pas c'est quoi des accesseurs ^^
 
mais bon je m'adresse peut être a une mauvaise personne la... vu comment celle ci répond je crois qu'on avance a rien
 
cette personne se reconnaitra et puis la pauvre.. elle doit avoir des problemes en ce moment je la comprend :/
 
bon courage Gilou
@+

Ben peut etre que lire un minimum d'ouvrages sur la programmation, ca te permettrait de savoir ce qu'il faut faire pour programmer, et connaitre le sens de notions de base.
 
En C, c'est relativement simple: si tu as besoin d'acceder en de nombreux points de ton programme a une variable, plutot que de manipuler une variable globale a tout bout de champ, tu declare une variable statique quelque part, tu l'initialise a sa declaration, et tu declares aussi deux fonctions publiques (les accesseurs) une qui va retourner la valeur courante de ta variable (accesseur Get) et une qui modifier la valeur de ta variable (accesseur Set). Ca te permet de ne modifier la valeur de ta variable uniquement au moyen de l'accesseur Set (et donc de controller a quel moment cette variable peut etre modifiée), de faire de la validation de valeur avant de changer la valeur de ta variable, dans le corps de ton accesseur Set, de ne pas passer inutilement cette variable en argument a des fonctions, mais d'en recuperer la valeur au moment ou on en a besoin au moyen de l'accesseur Get, ...
Bref, c'est pas une panacée, mais ca permet d'eviter une bonne partie des pbs qui peuvent survenir avec une variable globale.
A+,


Message édité par gilou le 04-07-2004 à 09:12:30

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed