Kommentarer
Svar
«#define» er et forhåndsbehandlingsdirektiv. Den definerer en etikett og en verdi som vil bli plassert i den forhåndsbehandlede kildekoden på samme sted for hver forekomst av etiketten. Ingen type er definert, så det er en grunnleggende og dum erstatning av strenger før kompilering. Det kan da føre til feil eller misforståelser under kompilering.
«const int xxx» definerer en type, og låser verdien av den forekomsten. Det er tryggere å bruke denne metoden. Kompilatoren kan se etter typefeil og kaste meldinger (eller bryte kompilering) hvis du gjorde en feil.
Eksempel:
#define A 5 int dummy_integer = A
… blir forhåndsbehandlet som …
int dummy_integer = 5
… og kompilatoren vil lese denne uttalelsen.
Men hvis jeg husker godt, kan du alltid overskrive et forhåndsbehandlingsdirektiv som følger:
#define A 5 int dummy_integer = A //some code here #undef A #define A "my_string" std::cout << A
Det er ikke bra. Ved å bruke «const» -modifikatoren kan du i stedet ikke endre verdien (eller typen) til en variabel (og slik at den er definert som «konstant»).
#define
i stedet for#include
. Den mer profesjonelle måten å erklære pinner på erconst int myPin = ...
Dette hjelper kompilatoren til å forstå at det er en konstant verdi og lagring ikke er nødvendig. Dette er litt bedre enn#define
da det gir kompileringsinformasjonen om datatypen.int
-metoden er bedre, ikke sant?enum
for heltall eller tegnkonstanter i stedet for enten#define
ellerconst int
. Se akseptert svar på Er det bedre å bruke #define eller const int for konstanter? ,