W
wika58
Compagnon
Qu'est ce qu'on en apprend sur ce post...
Merci aux "sachants"
Merci aux "sachants"
Les variables statiques sont initialisées à 0 par défaut, c'est dans les standards C.la syntaxe correcte pour la déclaration d'un static est la suivante (type et valeur à changer en fonction des besoins) :
static uint8_t var = 0;
Comme déjà dit en effet, les variables static n'ont qu'une portée locale mais leur espace mémoire est réservé globalement donc la valeur n'est pas perdue à la sortie de la fonction.
Pour préciser un peu le comportement des variables locales il faut comprendre le mécanisme d'allocation mémoire.
En très vulgaire, le compilateur va déterminer un espace mémoire nécessaire pour chaque fonction.
Lorsque cette fonction sera appelée, la quantité de mémoire nécessaire sera allouée et libérée à la fin de la fonction.
C'est pour cette raison qu'il est impératif d'initialiser les variables à leur première utilisation car, d'une fonction à l'autre, c'est potentiellement le même espace mémoire qui est utilisé et on peut ainsi retrouver les valeurs des variables d'une précédente fonction dans les variables locales d'une autre fonction.
Dans le même état d'esprit, il est aussi important d'éviter les cascades d'appel de fonction ou pire, les fonctions récursives (qui s'appellent ell-même). Tant qu'une fonction ne s'est pas terminée, son espace mémoire n'est pas libéré et la nouvelle fonction appelée va consommer elle aussi de la mémoire. Il y a donc un risque de saturation mémoire qui malgré tout est assez limitée sur un µC.
Et non...T'as jamais regardé "Qui veut gagner des millions" ?
Justement, tu dois avoir 80% au quiz de fin de semaine.Si une mauvaise réponse ne te pénalise pas, au pire tu réponds au pif.
tu veux dire 0x24 ?0h24 est bien une réponse à la question
Ils suggèrent l'utilisation de fonction...Ce qui est demandé, c’est d’utiliser des fonctions. Ils n’interdisent pas l’instruction delay.
C'est comme ca que j'ai commencé ma version 2.J’ai fait une fonction S et une fonction O. Dans la boucle principale, j’appel S, j’appel O, j’appel S,...
Oui c'est bien ça, tu déclares une constante, et si par erreur plus loin dans le code tu essaies de modifier la valeur de cette variable, tu auras une erreur de compilation.Un complement de question sur les variables...
Je vois que lors des declarations de ces variables c'est parfois précédé du terme "const"
Je suppose que c'est quand la valeur qui est dans la variable est la même pendant toute l'execution du programme... et en vue de reduire l'espace RAM utilisé ?