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 »).
#define
au 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#define
car il donne les informations de compilation sur le type de données.int
est préférable, non?enum
pour les constantes dentiers ou de caractères plutôt que#define
ouconst int
. Voir la réponse acceptée à Vaut-il mieux utiliser #define ou const int pour les constantes? ,