AVR - Definície konštánt: Rozdiel medzi revíziami
Z SensorWiki
(Vytvorená stránka „Spracované podľa Stackoverflow<ref group="REF">Jonathan Leffler: “static const” vs “#define” vs “enum” Available online:https://stackoverflow.com/questions…“) |
|||
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 zo dňa a času 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
- ↑ Jonathan Leffler: “static const” vs “#define” vs “enum” Available online:https://stackoverflow.com/questions/1674032/static-const-vs-define-vs-enum .