Kommentarer
Svar
”#define” är ett förbehandlingsdirektiv. Den definierar en etikett och ett värde som kommer att placeras i den förbehandlade källkoden på samma plats för varje förekomst av etiketten. Ingen typ definieras, så det är en grundläggande och dum ersättning av strängar före kompilering. Det kan sedan leda till fel eller missförstånd under kompileringen.
”const int xxx” definierar en typ och låser värdet för den instansen. Det är säkrare att använda den här metoden. Kompilatorn kan kontrollera typfel och kasta meddelanden (eller bryta sammanställning) om du gjorde ett misstag.
Exempel:
#define A 5 int dummy_integer = A
… kommer att förbehandlas som …
int dummy_integer = 5
… och kompilatorn kommer att läsa detta uttalande.
Men om jag kommer ihåg bra kan du alltid skriva över ett förbehandlingsdirektiv enligt följande:
#define A 5 int dummy_integer = A //some code here #undef A #define A "my_string" std::cout << A
Det är inte bra. Genom att använda modifieraren ”const” kan du istället inte ändra värdet (eller typen) för en variabel (och så definieras den ”konstant”).
#define
istället för#include
. Det mer professionella sättet att deklarera stift ärconst int myPin = ...
Detta hjälper kompilatorn att förstå att det är ett konstant värde och att lagring inte krävs. Detta är något bättre än#define
eftersom det ger sammanställningsinformationen om datatypen.int
-metoden är bättre?enum
för heltal eller teckenkonstanter snarare än antingen#define
ellerconst int
. Se accepterat svar på Är det bättre att använda #define eller const int för konstanter? ,