Nejlepší odpověď
#define je příkaz před procesorem v jazyce C.
Všechny příkazy s předponou # jsou preprocesorem prohlášení.
1.
#define MAX\_STUDENTS 200
#define se používá k deklarovat makro konstanty (jakéhokoli typu), jak je uvedeno výše. Pokud je hodnota použita na několika místech, v kódu. Bude údržba kódu snadná. Když je třeba změnit hodnotu MAX\_STUDENTS, je třeba ji změnit pouze na jednom řádku kódu místo na více místech.
Nevýhodou tohoto přístupu je debugger, tuto hodnotu nerozpozná.
int arr [MAX\_STUDENTS];
Lze použít také v podmíněné kompilaci, jak je uvedeno níže
#define WINDOWS
#ifdef WINDOWS
..
.. code of Windows OS
..
#else
..
.. code of Linux OS
..
#endif
POZNÁMKA: K nedefinování lze použít #undef
2.
#define SQUARE (x) (x * x)
makro funkce jsou jako normální funkce, až na to, že preprocesor nahradí volání metody namísto volání funkce za běhu.
Výhodou je, že je zabráněno režii volání funkcí, takže provedení je rychlejší
NÁMĚSTÍ (2 + 3)
Nevýhodou je, že makro funkce se nechová jako normální funkce. Zvažte například výše makro volání SQUARE (2 + 3), jehož výsledkem je nesprávná hodnota 11, kde jako normální funkce vrací 25.
Doporučuje se použít makro funkci (místo normální funkce), když velikost je jeden nebo dva řádky a nemá vedlejší účinky, jak je uvedeno výše.
Odpověď
#define je C preprocesor směrnice slouží k definování maker .
Pojďme to rozdělit.
Direktiva preprocesoru je programový příkaz, který je vyvolán před tím, než proběhne kompilace programu. Ve skutečnosti jakýkoli řádek následovaný # je preprocesor. Patří sem také include . Direktivy preprocesoru se používají k poskytování obecných pokynů nebo požadovaných dat, která se používají uvnitř programu.
Makro je blok kódu, který dostal jméno. Jakýkoli výskyt tohoto jména je nahrazen ced by hodnotou makra. Řekněme, že jsem definoval makro s názvem AMOUNT, jehož hodnota je 200. Nyní pokaždé, když je v programu použito slovo AMOUNT, je před kompilací nahrazeno číslem 200. Na rozdíl od proměnných, kde jsou v nich skutečně uložena data, makra chovat se spíše jako aliasy.
Syntaxe směrnice #define je následující:
#define MACRONAME value
NEBO
#define MACRONAME (expression)
Makru lze přiřadit číselnou i znakovou hodnotu (musí být uvnitř uvozovek). Makra lze použít jako jakékoli jiné konstantní proměnné.
Makro můžete také zrušit pomocí směrnice #undef. Zde je syntaxe:
#undef MACRONAME
//MACRONAME can no longer be used in the program
Doufám, že moje odpověď byla užitečná.