je voudrais savoir la syntaxe pour definir une constante static de type unsigned char dans une fonction. je le fais parce que je ne veux pas utiliser de variable globale
je voudrais savoir la syntaxe pour definir une constante static de type unsigned char dans une fonction. je le fais parce que je ne veux pas utiliser de variable globale
Hum,
me semble un peu paradoxal...
Une constante ne peut pas etre modife et ce trouve en ROM.
Une static est une variable modifiable et ce trouve en RAM.
Je pense que tu dois te tromper quelque part...
Salutations
C'est exactement comme quand tu le dis, il faut préciser :
- que son type est unsigned char
- qu'elle est constante
- qu'elle est statique
Tu peux faire comme ceci :
Note : il te faut l'initialiser dans la foulée, car elle est constante (et que tu ne pourras donc pas le faire plus tard)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void mamethode() { const static unsigned char uc = 7; }
Sauf quand elle est const.Envoyé par emardjean
un des intérêts c'est que dans le code :
On génère le même exécutable que dans
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void mamethode() { const static unsigned char uc = 7; fait_quelque_chose_avec_ceci(uc); fait_autre_chose_avec_ceci(uc); va_ceuillir_des_noisettes(uc); range_tes_oreilles(uc); ne_touche_pas_au_chocolat(uc); }
Mais cela se modifie plus facilement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void mamethode() { fait_quelque_chose_avec_ceci(7); fait_autre_chose_avec_ceci(7); va_ceuillir_des_noisettes(7); range_tes_oreilles(7); ne_touche_pas_au_chocolat(7); }
Bonne journée.
Ok,
En C++, on remplace les #define par des const static,
désolé pour mes remarques désagreables
![]()
Je mettrais un bémol, néanmoins. Définir la constante comme static n'apporte rien dans l'exemple.
L'interêt d'une variable de fonction déclarée 'static' est que cela permet de préserver sa valeur entre les appels successifs de la fonction.
Si cette dernière est constante, conserver sa valeur est sans objet.
Bien sûr 'static' n'a pas le même sens lors d'une déclaration de variable en dehors d'une fonction.
Pour ce qui est d'écrire la valeur des constantes dans la ROM. J'espère que c'est un abus de langage...
Bonjour,
Nul ne doute de l'intérêt de déclarer des constantes plutôt que de coder des valeurs en clair, comme tu l'as bien noté.
Par contre, j'aimerais savoir pourquoi tu tiens à ce qu'elle soit static : ça n'amène absolument rien de plus à son utilisation.
Et globalement, constante ou variable, le tout est en RAM. Qui vous a mis en tête qu'une constante était en ROM ?
Désolé, mais ce sigle fait référence à un type de mémoire physique, pas au fait qu'un élément d'un programme n'est pas modifiable.
De plus, pour certains compilateurs (tous ?), une constante n'est même pas en mémoire à un endroit précis, elle est codée en dur dans l'exécutable.
Partager