Hva ' er forskjellen mellom #define og const int når du erklærer en pin? [duplikat]

Dette spørsmålet har allerede svar her :

Kommentarer

  • Jeg antar at du mener #define i stedet for #include. Den mer profesjonelle måten å erklære pinner på er const 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.
  • @MikaelPatel nøyaktig … så i utgangspunktet int -metoden er bedre, ikke sant?
  • Ja. Oppdater tittelen og fjern " inkluder ". Det er noe helt annet og ikke relatert 🙂
  • Jeg foretrekker vanligvis å bruke enum for heltall eller tegnkonstanter i stedet for enten #define eller const int. Se akseptert svar på Er det bedre å bruke #define eller const int for konstanter? ,

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»).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *