Salut,
Que préférerez-vous entre const int RougePin = 9; et #define RougePin 9 ?
Merci.
Version imprimable
Salut,
Que préférerez-vous entre const int RougePin = 9; et #define RougePin 9 ?
Merci.
un int c’est deux ou 4 octets... et une valeur numérique seule (le define) est aussi par défaut un int.Code:const byte pinLedRouge = 9; // ou uint8_t au lieu de byte si vous voulez rester dans le standard
Ça permet au compilateur de faire des optimisations (et le camelCase est plutôt le standard dans le codage arduino)
Ok merci.
Oui dans ce cas effectivement avec byte on consomme 1 octet au lieu de 2 ou 4 donc c'est mieux...
Mais qu'en est-il dans le où on aurait un int ? La consommation mémoire est la même ?
Tout dépend comment vous utilisez la constante. C’est un int donc 2 ou 4 octets suivant la plateforme en théorie, mais lorsqu’on compile il y a une phase d’optimisation et si le compilateur arrive à voir qu’il peut directement utiliser la valeur sur un octet alors il n’y aura pas de gain visible une fois compilé.
Autant ne pas prendre de "risque" et aider le compilateur en lui donnant le bon type directement.
Encore merci.
Oui effectivement autant ne pas prendre de "risque"...
PS : D'ailleurs je me demande si le fait de préciser que c'est une constante change vraiment quelque chose ???
oui parce qu'il va d'une part vérifier que vous ne changez jamais sa valeur (évite des bugs) et d'autres part il peut prendre la décision de mettre (en assembleur) directement la valeur dans les opérations adaptée (charger un registre directement par exemple) puisqu'elle tient sur un octet et qu'il est sûr qu'elle ne changera pas.
Sans const, par le biais d'un pointeur ou d'opérations mémoire vous pouvez aller modifier la valeur et donc le compilateur n'a pas le droit de mettre directement la valeur, il faut qu'il aille la chercher d'abord en mémoire --> c'est plus long et ça mange de la mémoire.
Ok merci.