Co to jest #define w C?


Najlepsza odpowiedź

#define to instrukcja preprocesora w języku C.

Wszystkie instrukcje poprzedzone znakiem # są preprocesorem instrukcji.

1.

#define MAX\_STUDENTS 200

#define służy do deklaruj stałe makro (dowolnego typu), jak pokazano powyżej. Jeśli wartość jest używana w kilku miejscach w kodzie., Utrzymanie kodu staje się łatwe. Gdy wartość MAX\_STUDENTS wymaga zmiany, należy ją zmienić tylko w jednym wierszu kodu zamiast w wielu miejscach.

Wadą tego podejścia jest debugger, nie rozpoznaje tej wartości.

int arr [MAX\_STUDENTS];

Może być również używany w kompilacji warunkowej, jak pokazano poniżej

#define WINDOWS

#ifdef WINDOWS

..

.. code of Windows OS

..

#else

..

.. code of Linux OS

..

#endif

UWAGA: #undef może służyć do undefine

2.

#define SQUARE (x) (x * x)

Funkcje makr są podobne do normalnych funkcji, z tą różnicą, że preprocesor zastępuje wywołania metod, zamiast wywoływać funkcję w czasie wykonywania.

Zaletą jest to, że unika się narzutu wywołań funkcji, więc wykonanie jest szybsze

SQUARE (2 + 3)

Wadą jest to, że funkcja makra nie zachowuje się jak normalne funkcje. Na przykład rozważ powyższe wywołanie makra SQUARE (2 + 3), które daje błędną wartość 11, gdzie normalna funkcja zwraca 25.

Zaleca się użycie funkcji makra (zamiast normalnej funkcji), gdy rozmiar to jedna lub dwie linie i nie ma skutków ubocznych, jak pokazano powyżej.

Odpowiedź

#define to C preprocesor dyrektywa używana do definiowania makr .

Przełóżmy to.

Dyrektywa preprocesora jest instrukcją programu, która jest wywoływana przed kompilacją programu. Właściwie każdy wiersz, po którym następuje # jest preprocesorem. Obejmuje to również poprawkę include . Dyrektywy preprocesora służą do dostarczania ogólnych instrukcji lub wymaganych danych, które są używane wewnątrz programu.

Makro to blok kodu, któremu nadano nazwę. Każde wystąpienie tej nazwy jest cedowane przez wartość makra. Powiedzmy, zdefiniowałem makro o nazwie AMOUNT, którego wartość to 200. Teraz za każdym razem, gdy słowo AMOUNT jest używane w programie, przed kompilacją jest zastępowane przez liczbę 200. W przeciwieństwie do zmiennych, w których dane są faktycznie przechowywane w nich, makra działają raczej jak nazwy aliasów.

Składnia dyrektywy #define jest następująca:

#define MACRONAME value

LUB

#define MACRONAME (expression)

Makro może mieć przypisaną wartość liczbową oraz znak (musi znajdować się w cudzysłowie). Makra mogą być używane jak dowolne inne stałe zmienne.

Możesz także zdefinować makro za pomocą dyrektywy #undef. Oto składnia:

#undef MACRONAME

//MACRONAME can no longer be used in the program

Mam nadzieję, że moja odpowiedź była pomocna.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *