Milyen ' különbség van a #define és a const int között a pin deklarálásakor? [duplicate]

Ennek a kérdésnek már itt megválaszolva van :

Megjegyzések

  • Azt hiszem, #define az #include helyett. A csapok deklarálásának professzionálisabb módja a const 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.
  • @MikaelPatel pontosan … tehát alapvetően a int módszer jobb?
  • Igen. Kérjük, frissítse a címet, és távolítsa el a " include " fájlt. Ez valami egészen más és nem összefügg 🙂
  • Általában a enum -t használom egész vagy karakterállandókra, nem pedig a #define vagy const int. Lásd a válasz elfogadott válaszát. Jobb a konstansoknál a #define vagy const int használata? ,

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük