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
Mon probleme proviens des variables globales (dans ce cas) parm1, parm2, parm3, parm4, parm5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } //_______________________________________________________________ }
Elles sont issues de main.c...
C'est pas tres modulaire tout çà
Attention, je refuse de passer 5 arguments à une fonction (trop difficile à debugger en test unitaire)
pour moi la seule solution, utiliser une structure externe pour récuperer les parametres
on aurait alors
Mais je double l'espace memoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } //_______________________________________________________________ }
J'ai une autre solution, mais je préférerai l'éviter.(donc j'en parlerai plus tard)
Pouvez vous m'aider svp?
Partager