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
Vous pouvez ragez sur le goto mais si vous avez mieux, je prend !
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: }![]()
Partager