variable omme in

Bonjour,

Pas facile de décrire exactement ce que je veux faire. :wink:

Je souhaite passer une variable a une fonction. Mais au lieu de la nommer, je souhaiterais récupérer sa valeur dans une liste pour pouvoir boucler .

affiche(var);

en

liste []={var1, var2}
for i in (byte i = 0; i < 2 ; i++}
{
    affiche(liste[i]);
}

malheureusement, je sors avec une erreur de mismatch de type "impossible d'utiliser une valeur de type "const byte *" pour initialiser une entité de type "byte""

Ci-après le code qui ne fonctionne pas

void affiche(const byte mot[])
{
  for (int i = 1; i < mot[0] + 1; i++)
  {
    matrice_leds[mot[i]] = CRGB::PapayaWhip;
  }
}

const byte une[4] = {3, 70, 69, 68};
const byte deux[4] = {3, 40, 49, 78};

char liste[]={une, deux}

for i in (byte i = 0; i < 2 ; i++}
{
    affiche(liste[i]);
}

Existe-t-il un moyen pour s'en sortir ? A moins que ce que je veuille faire soit impossible.

merci !

Si vous déclarez

 const byte une[4] = {3, 70, 69, 68};
const byte deux[4] = {3, 40, 49, 78};

Le type de une et de deux c’est un tableau de 4 octets constants.

Vous ne pouvez donc pas faire char liste[]={une, deux}ou liste serait un tableau de caractères... si vous voulez un tableau avec une et deux, son type sera tableau de tableau d’octets constants.

Si vous voulez déclarer un tableau à 2 dimension vous pouvez le faire d’un coup
const byte liste[][4] = {{3, 70, 69, 68}, {3, 40, 49, 78}};et vous accédez à un élément par liste[i][j]ou à un sous tableau par liste[i]

Je ne suis pas expert des pointeurs, mais je sens que ton problème pourrait se résoudre avec un tableau de pointeurs. Au lieu de stocker les noms des variables, tu stockerais leurs adresses.

Tu boucles sur le tableau et tu récupères la valeur stockée à chaque adresse.