structuration et programmation modulaire
Bonjour à tous,
j'ai un peu de mal à cerner la bonne solution et j'aimerai avoir votre avis.
J'ai donc 2 fichiers .c avec leurs .h respectif (main et fonction_vitesse)
Dans le fichier main.c, j'appelle "donneMoiLaVitesse()", cette fonction ne donne pas directement le resultat car elle passe par trois autres fonctions
=>miseEnForme qui prend 2 arguments
=>obtenirVitesseNonCorrige qui prend 3 trois arguments
=>ObtenirVitesseReel qui prend 2 arguments
Le squelette pour illustrer
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| //____________________________________________________________
main.c
------
int parm1, parm2, parm3, parm4, parm5;
while
{
int result = donneMoiLaVitesse();
}
//_____________________________________
foction_vitesse.c
----------------
int donneMoiLaVitesse()
{
int result1;
int result2;
int result3;
result1 = miseEnForme(parm1, parm2);
result2 = obtenirVitesseNonCorrige(result1 , parm3, parm4);
result3 = ObtenirVitesseReel(result2 , parm5);
return result3;
}
//_______________________________________________________________
} |
Mon probleme proviens des variables globales (dans ce cas) parm1, parm2, parm3, parm4, parm5
Elles sont issues de main.c...
C'est pas tres modulaire tout çà:aie:
Attention, je refuse de passer 5 arguments à une fonction (trop difficile à debugger en test unitaire):lol:
pour moi la seule solution, utiliser une structure externe pour récuperer les parametres
on aurait alors
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| //____________________________________________________________
main.c
------
int parm1, parm2, parm3, parm4, parm5;
void donneLesParametresAlaFonctionVitesse();
while()
{
donneLesParametresAlaFonctionVitesse();
int result = donneMoiLaVitesse();
}
void donneLesParametresAlaFonctionVitesse()
{
ParamVitesse.parm1 = parm1;
ParamVitesse.parm2 = parm2;
ParamVitesse.parm3 = parm3;
ParamVitesse.parm4 = parm4;
ParamVitesse.parm5 = parm5;
}
//_____________________________________
fonction_vitesse.c
----------------
struct Param
{
int parm1;
int parm2;
int parm3;
int parm4;
int parm5;
};
struct Param ParamVitesse;
int donneMoiLaVitesse()
{
int result1;
int result2;
int result3;
result1 = miseEnForme(ParamVitesse.parm1, ParamVitesse.parm2);
result2 = obtenirVitesseNonCorrige(result1 , ParamVitesse.parm3, ParamVitesse.parm4);
result3 = ObtenirVitesseReel(result2 , ParamVitesse.parm5);
return result3;
}
//_______________________________________________________________
} |
Mais je double l'espace memoire.
J'ai une autre solution, mais je préférerai l'éviter.(donc j'en parlerai plus tard:oops:)
Pouvez vous m'aider svp?