Reacties
Antwoord
“#define” is een preprocessor-instructie. Het definieert een label en een waarde, die in de voorverwerkte broncode op dezelfde plaats van elk voorkomen van het label worden geplaatst. Er is geen type gedefinieerd, dus het is een eenvoudige en domme vervanging van strings vóór compilatie. Het kan dan leiden tot fouten of misverstanden tijdens het compileren.
“const int xxx” definieert een type en vergrendelt de waarde van die instantie. Het is veiliger om deze methode te gebruiken. De compiler kan controleren op typefouten en berichten genereren (of compilatie breken) als je een fout hebt gemaakt.
Voorbeeld:
#define A 5 int dummy_integer = A
… zal worden voorverwerkt als …
int dummy_integer = 5
… en de compiler zal deze instructie lezen.
Als ik het me echter goed herinner, kun je een preprocessor-instructie altijd als volgt overschrijven:
#define A 5 int dummy_integer = A //some code here #undef A #define A "my_string" std::cout << A
Dat is niet goed. Door in plaats daarvan de “const” modifier te gebruiken, kunt u “de waarde (noch het type) van een variabele veranderen (en dus wordt het gedefinieerd als” constant “).
#define
in plaats van#include
. De meer professionele manier om pinnen te declareren isconst int myPin = ...
Dit helpt de compiler te begrijpen dat het een constante waarde is en dat opslag niet vereist is. Dit is iets beter dan#define
aangezien het de compileerinformatie geeft over het gegevenstype.int
methode is beter toch?enum
voor integer- of tekenconstanten in plaats van#define
ofconst int
. Zie geaccepteerd antwoord op Is het beter om #define of const int te gebruiken voor constanten? ,