Bonjour,
J'ai une array en format 8b avec des données de différents formats suivant un indicatif :
Actuellement j'utilise un parser de type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 uint8_t donnees[] = {1, 50, 2, 60, 125, 1, 72, 3, 80};
Je m'étais dit que cela serait plus propre d'utiliser des structures :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for (uint8_t a = 0; a < sizeof(donnees); a++) { if ((donnees[a] == 1) || (donnees[a] == 3)) { //donnees 8b a++; } if (donnees[a] == 2) { //donnees 16b a = a +2; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 struct donnees_8b { uint8_t indicatif; uint8_t valeur; } struct donnees_16b { uint8_t indicatif; uint16_t valeur; }Sauf que cela me dit que my_struct n'est pas déclaré. J'ai donc tenté de déclarer avant, mais cela ne me redéfinie par la structure. my_struct reste sur la version 8b :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 switch (donnees[a]) { case 1: case 3: { struct donnees_8b my_struct; break;} case 2: { struct donnees_16b my_struct; break;} } } memcpy(&my_struct, &donnees[a], sizeof(my_struct));
J'ai cherché et je n'arrive pas à comprendre si c'est parce que mon utilisation de structure est erronnée, à savoir que le compilateur l'utilise de manière static lors de son initialisation ou bien qu'il y a une autre raison ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 struct donnees_8b my_struct; switch (donnees[a]) { case 1: case 3: { struct donnees_8b my_struct; break;} case 2: { struct donnees_16b my_struct; break;} } } memcpy(&my_struct, &donnees[a], sizeof(my_struct));
Merci d'avance,
Partager