Operácie

AVR - Definície konštánt: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Vytvorená stránka „Spracované podľa Stackoverflow<ref group="REF">Jonathan Leffler: “static const” vs “#define” vs “enum” Available online:https://stackoverflow.com/questions…“
 
Balogh (diskusia | príspevky)
Bez shrnutí editace
Riadok 3: Riadok 3:


Niekde sa na definície konštánt (napr. pripojenie periférí ku konkrétnym pinom používa
Niekde sa na definície konštánt (napr. pripojenie periférí ku konkrétnym pinom používa
  static const int led = 13;
  static const int led = 13;             (1)
alebo  
alebo  
  #define led 13
  #define led 13                         (2)
alebo niekde aj  
alebo niekde aj  
  enum { led = 13 };
  enum { led = 13 };                     (3)


Odpoveď je rôzna v závislosti od toho, či používame jazyk C++ alebo C. Pre C++ platí prvá možnosť, vždy použiť const.
Odpoveď je rôzna v závislosti od toho, či používame jazyk C++ alebo C. Pre C++ platí prvá možnosť, vždy použiť const.

Verzia z 21:26, 22. január 2021

Spracované podľa Stackoverflow[REF 1]


Niekde sa na definície konštánt (napr. pripojenie periférí ku konkrétnym pinom používa

static const int led = 13;              (1)

alebo

#define led 13                          (2)

alebo niekde aj

enum { led = 13 };                      (3)

Odpoveď je rôzna v závislosti od toho, či používame jazyk C++ alebo C. Pre C++ platí prvá možnosť, vždy použiť const. V jazyku C odpoveď záleží od použitia:

  • Ak potrebujeme aj pointer, tak musíme použiť (1),
  • pretože pre (2) pointer nevznikne.
  • Možnosti (1) a (3) vytvoria aj symbol pre debugger, možnosť (2) nie.
  • Ak potrebujeme určiť rozmer poľa alebo reťazca, nedá sa použiť (1).
  • Ak chceme použiť konštantu do príkazu switch, nedá sa použiť (1)
  • Ak chceme inicializovať statickú premennú, nemôžeme použiť (1)


References

  1. Jonathan Leffler: “static const” vs “#define” vs “enum” Available online:https://stackoverflow.com/questions/1674032/static-const-vs-define-vs-enum .