Arduino Forum

International => Français => Topic started by: icare on Aug 10, 2013, 06:03 am

Title: Déclaration String en static
Post by: icare on Aug 10, 2013, 06:03 am
Bjr,
Pour contrôler le déroulement d'un programme, j'ai ajouté une fonction qui m'affiche sur un lcd l'équivalent de Serial.println.
La structure de mon programme initiale est la suivante :
Code: [Select]

String tableau[4];
//ou
//String tableau[4] = {"","","",""};
byte numLig = 0;
.....
void setup(){
 ....
}
void loop(){
 ....
 lcdPrintln("Coucou");
 delay(1000);
}
void lcdPrintln(String aAfficher){
 .....
}

Et le programme fonctionne très bien et affiche bien les lignes les unes après les autres.
Comme tableau et numLig sont uniquement utilisés dans la fonction lcdPrintln() je pensais utiliser des variables locales avec la déclaration static plutôt que des variables locales globales avec la structure ci-dessous :
Code: [Select]

//String tableau[4];
//ou
//String tableau[4] = {"","","",""};
//byte numLig = 0;
.....
void setup(){
 ....
}
void loop(){
 ....
 lcdPrintln("Coucou");
 delay(1000);
}
void lcdPrintln(String aAfficher){
 static String tableau[4];
 static byte numLig = 0;
 .....
}

La compilation ne se fait pas et j'ai le message d'erreur suivant : undefined reference to `atexit'
Malgré l'usage de google je n'ai pas trouvé de solution à mon problème. Avez-vous une idée sur les modifications à faire pour faire fonctionner le code ?
PS: static byte numLig = 0; fonctionne sans static String tableau[4];
Title: Re: Déclaration String en static
Post by: skywodd on Aug 10, 2013, 11:39 am
Bonjour,

Ton écran lcd à une taille en caractères connue, alors pourquoi utiliser une String pour ça ...
Un simple tableau de char et les fonctions de base strcpy(), strcat(), ... suffirait largement.

La classe String ne devrait même pas exister, c'est une saloperie sans nom !

Si tu veut régler ton problème voila la solution (attention ça picote) :
http://forum.arduino.cc/index.php?topic=73177.0
Title: Re: Déclaration String en static
Post by: icare on Aug 10, 2013, 12:05 pm
Bjr,

Si tu veut régler ton problème voila la solution (attention ça picote) :
http://forum.arduino.cc/index.php?topic=73177.0

C'est vrai ce n'est pas de la tarte, mais j'avais déjà essayé cette solution et c'est un festival d'insultes du compilateur.