bonjour
Je fais du c++ depuis déjà un moment je suis tombé sur un os pour un projet (un drone autonome):
quand je communique avec mon module wifi, je n'ai pas besoin de paralyser tout le programme pour attendre sa réponse

donc dans ma fonction de mise_a_jour, j'envoie un message et je repart dans la boucle stabiliser mon drone

mais, quand je reçois la réponse, il faut que je reprenne là ou je me suis arrêté dans mise_a_jour.... ça ressemble beaucoup à un GOTO !!!

mais on m'a toujours dit de ne jamais utiliser de goto pour des raisons évidentes, auriez vous une solution pour les remplacer ?

ps1 : mon programme doit être très rapide, je suis sur un ARM donc pas de switch avec un case pas ligne...
ps2 : ce code n'est clairement pas fonctionnel, c'est juste pour vous donner une idée du problème, il faut que je revoie le type de emplacement_actuel


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
 
void loop() 
{
  //plein d'instructions
 
  wifi.loop();
}
 
class wifi
{
  public:
    void loop();
 
  private:
    void reception();
    void mise_a_jours();
    String emplacement_actuel;
};
 
void wifi::loop();
{
  if (attente de réponse ) reception();
 
  else mise_a_jours();
}
 
void wifi::reception()
{
  if( la réponse n'est pas arrivée )
  {
    return(0);
  }
  else
  {
    goto(emplacement_actuel);
  }
}
 
void wifi::mise_a_jours()
{
  emplacement_actuel = "flag1:"
  write_serie("hey");
  return
  flag1:
  emplacement_actuel = "flag2:"
  write_serie("ho");
  return
  flag2:
  emplacement_actuel = "flag3:"
  write_serie("hey");
  return
  flag3:
}
Vous pouvez ragez sur le goto mais si vous avez mieux, je prend !