Megjegyzések
válasz
A “#define” egy előfeldolgozó irányelv. Meghatároz egy lable-t és egy értéket, amelyet az előfeldolgozott forrás-kódban kell elhelyezni a címke minden előfordulásának ugyanazon a helyén. Nincs meghatározva típus, ezért a húrok alapos és néma helyettesítése a fordítás előtt. Ez hibákhoz vagy félreértésekhez vezethet a fordítás során.
Az “const int xxx” meghatároz egy típust, és zárolja az adott példány értékét. Biztonságosabb ezt a módszert használni. A fordító ellenőrizheti a típushibákat, és üzeneteket dobhat (vagy megszakíthatja a fordítást), ha hibázott.
Példa:
#define A 5 int dummy_integer = A
… előkezelésre kerül …
int dummy_integer = 5
… és a fordító elolvassa ezt az utasítást.
Ha azonban jóra emlékszem, akkor mindig az alábbiak szerint írhatja felül az előfeldolgozó utasításait:
#define A 5 int dummy_integer = A //some code here #undef A #define A "my_string" std::cout << A
Ez nem jó. A “const” módosító helyett ehelyett nem “változtathatja meg a változó értékét (sem típusát) (és így” konstans “-ot határoz meg).
#define
az#include
helyett. A csapok deklarálásának professzionálisabb módja aconst int myPin = ...
. Ez segít a fordítónak megérteni, hogy ez állandó érték, és nincs szükség tárolásra. Ez valamivel jobb, mint a#define
, mivel megadja a fordítási információkat az adattípusról.int
módszer jobb?enum
-t használom egész vagy karakterállandókra, nem pedig a#define
vagyconst int
. Lásd a válasz elfogadott válaszát. Jobb a konstansoknál a #define vagy const int használata? ,