Komentáře
odpověď
„#define“ je preprocesorová směrnice. Definuje označení a hodnotu, která bude umístěna v předzpracovaném zdrojovém kódu na stejném místě každého výskytu štítku. Není definován žádný typ, takže se jedná o základní a hloupé nahrazení řetězců před kompilací. To pak může vést k chybám nebo nedorozuměním během kompilace.
„const int xxx“ definuje typ a uzamkne hodnotu dané instance. Je bezpečnější použít tuto metodu. Kompilátor může zkontrolovat chyby typu a vyhodit zprávy (nebo přerušit kompilaci), pokud jste udělali chybu.
Příklad:
#define A 5 int dummy_integer = A
… bude předzpracováno jako …
int dummy_integer = 5
… a překladač toto prohlášení přečte.
Pokud si ale dobře pamatuji, můžete vždy přepsat direktivu preprocesoru takto:
#define A 5 int dummy_integer = A //some code here #undef A #define A "my_string" std::cout << A
To není dobré. Použitím modifikátoru „const“ místo toho nemůžete „změnit hodnotu (ani typ) proměnné (a tedy„ definované “konstanty).
#define
místo#include
. Profesionálnější způsob deklarace pinů jeconst int myPin = ...
To kompilátoru pomáhá pochopit, že se jedná o konstantní hodnotu a úložiště se nevyžaduje. To je o něco lepší než#define
, protože poskytuje kompilační informace o datovém typu.int
metoda je lepší, že?enum
pro celočíselné nebo znakové konstanty spíše než#define
neboconst int
. Viz přijatá odpověď na Je lepší použít pro konstanty #define nebo const int? ,