Hvad ' er forskellen mellem #define og const int, når man erklærer en pin? [duplikat]

Dette spørgsmål har allerede svar her :

Kommentarer

  • Jeg antager, at du mener #define i stedet for #include. Den mere professionelle måde at erklære stifter på er const int myPin = ... Dette hjælper kompilatoren med at forstå, at det er en konstant værdi, og at lagring ikke er påkrævet. Dette er lidt bedre end #define, da det giver kompileringsoplysningerne om datatypen.
  • @MikaelPatel nøjagtigt … så dybest set int -metoden er bedre, ikke?
  • Ja. Opdater titlen, og fjern " inkluder ". Det er noget helt andet og ikke relateret 🙂
  • Jeg foretrækker normalt at bruge enum til heltal eller tegnkonstanter i stedet for enten #define eller const int. Se accepteret svar på Er det bedre at bruge #define eller const int til konstanter? ,

Svar

“#define” er et præprocessordirektiv. Den definerer en etiket og en værdi, der placeres i den forbehandlede kildekode på samme sted for hver forekomst af etiketten. Ingen type er defineret, så det er en grundlæggende og dum erstatning af strenge før kompilering. Det kan derefter føre til fejl eller misforståelser under kompilering.

“const int xxx” definerer en type og låser værdien af den forekomst. Det er sikrere at bruge denne metode. Compileren kan kontrollere typefejl og kaste beskeder (eller bryde kompilering), hvis du begik en fejl.

Eksempel:

#define A 5 int dummy_integer = A 

… forbehandles som …

int dummy_integer = 5 

… og compileren læser denne erklæring.

Men hvis jeg husker godt, kan du altid overskrive et forprocessordirektiv 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 godt. Ved at bruge “const” -modifikatoren kan du i stedet ikke ændre værdien (eller typen) for en variabel (og således er den defineret “konstant”).

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *