Commentaires
Réponse
« #define » est une directive de préprocesseur. Il définit une étiquette et une valeur, qui seront positionnées dans le code source pré-traité au même endroit de chaque occurrence de létiquette. Aucun type nest défini, il sagit donc dune substitution basique et stupide de chaînes avant la compilation. Cela peut alors conduire à des erreurs ou des malentendus lors de la compilation.
« const int xxx » définit un type et verrouille la valeur de cette instance. Il est plus sûr dutiliser cette méthode. Le compilateur peut vérifier les erreurs de type et lancer des messages (ou interrompre la compilation) si vous avez fait une erreur.
Exemple:
#define A 5 int dummy_integer = A
… sera prétraité comme …
int dummy_integer = 5
… et le compilateur lira cette instruction.
Cependant, si je me souviens bien, vous pouvez toujours écraser une directive de préprocesseur comme suit:
#define A 5 int dummy_integer = A //some code here #undef A #define A "my_string" std::cout << A
Ce nest pas bon. En utilisant le modificateur « const », à la place, vous ne pouvez pas « changer la valeur (ni le type) dune variable (et donc elle » est définie comme « constante »).
#defineau lieu de#include. La manière la plus professionnelle de déclarer les broches estconst int myPin = ...Cela aide le compilateur à comprendre quil sagit dune valeur constante et que le stockage nest pas nécessaire. Cest légèrement mieux que#definecar il donne les informations de compilation sur le type de données.intest préférable, non?enumpour les constantes dentiers ou de caractères plutôt que#defineouconst int. Voir la réponse acceptée à Vaut-il mieux utiliser #define ou const int pour les constantes? ,