Bonjour
Je débute avec Arduino, et je souhaite créer une fonction "debug" qui me permette d'afficher le contenu d'un tableau de byte de façon lisible dans la console (Serial).
Exemple: 90, E6, BA, BC, 99, 2A
Pour tester, je déclare un tableau de taille 6, et quand je fais un sizeof dessus ça me retourne bien 6.
Maintenant quand je passe ce tableau à une fonction, et que que je fais un sizeof sur le paramètre, ça m'affiche 2 :
byte monTableau[] = { 0x90, 0xE6, 0xBA, 0xBC, 0x99, 0x2A };
void setup() {
Serial.begin(9600);
Serial.println(sizeof(monTableau)); // affiche 6
debug(monTableau);
}
void loop() {
}
// Ma fonction pour afficher un tableau :
void debug(byte* data){
Serial.println(sizeof(data)); // affiche 2, WTF ?
for(int i=0; i<sizeof(data); i++){
if(i>0){
Serial.print(", ");
}
Serial.print(data[i], HEX);
}
Serial.println("");
}
J'ai cherché un peu, et j'ai vu que sizeof était évalué au moment de la compilation, et pas de l’exécution, du coup il me retourne la taille du pointeur (2), et pas celle du tableau

.
Est-ce qu'il y a un moyen pour calculer la taille du tableau passé en paramètre de ma fonction debug ?
Sinon il me reste plus qu'à ajouter un paramètre size à ma fonction, mais ça sera moins pratique à utiliser...
Merci