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 : 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;
}
//_______________________________________________________________
 
}
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 çà

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

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;
}
//_______________________________________________________________
 
}
Mais je double l'espace memoire.

J'ai une autre solution, mais je préférerai l'éviter.(donc j'en parlerai plus tard)
Pouvez vous m'aider svp?