Makro w języku C

Makro w języku C
Makro w języku C to kawałek kodu, którego przypisano nazwę. Gdy nazwa jest używana w dowolnym miejscu w programie, wartość makro jest zastąpiona przed kompilacją programu. W tym artykule szczegółowo zobaczymy, jak napisać makro w języku C.

Rozważ następujący kod:

POCZĄTEK
Liczba całkowita n = 5;
Druk („Wartość n to %d”, n);
KONIEC

Powyższy kod nie jest prawidłowym kodem C.

Ale następujący kod jest prawidłowy:

//Przykład 1.C
#Define start int main ()
#definicja end
#definicja Integer int
#Define Print (A, B) Printf (A, B)
POCZĄTEK
Liczba całkowita n = 5;
Druk („Wartość n to %d”, n);
KONIEC

Przed kompilacją makro start, liczba całkowita, drukowana i koniec została zastąpiona ich wartością, a kod staje się prawidłowym kodem C. Możemy sprawdzić za pomocą następującego polecenia:

GCC -e Przykład 1.C

To polecenie wyświetli się po rozszerzeniu wszystkich makr.

Teraz zobaczymy różne typy makr:

1. Obiektowe makra:

Składnia:

#Define Macro_Name Macro_Value
  • Makro zawsze zaczyna się od #Define
  • Macro_name to zdefiniowana przez użytkownika nazwa makra
  • Macro_Value to wartość makra. Może to być wszystko, oprócz jednej linii, a nadwozie makro kończą się końcami tej linii. Na końcu nie wymaga półkolisu (;). Rozważana jest również przestrzeń.

Jeśli makro przyjmuje więcej niż jedną linię, możemy to zrobić w następujący sposób:

#Define Macro_Name Macro_Value1 \
makro_value2 \
Macro_Value3
#definicja maks. 200

To makro wygląda jak obiekt danych, dlatego ten typ makra nazywał Macro podobną do obiektu.

// Przykład2.C
//#włączać
#definicja maks. 200
int main ()

printf („wartość maksymalna to: %d”, maks.);
powrót 0;

W Exapmle2.C, Max jest makro. Z wyjścia obserwujemy to Max jest zastąpiony jego wartością 200.

2. Makra podobne do funkcji:

Składnia:

#Define Macro_Name () Macro_Value

nazwa makro_namentu to zdefiniowana przez użytkownika nazwa makra. Para nawiasu musi postawić po nazwa makro_namentu. Nie jest dozwolone pomiędzy nazwa makro_namentu i nawias. Możemy również przekazywać argumenty w tego typu makra.

#Define Add (x, y) x+y

To makro wygląda jak wywołanie funkcji, dlatego ten typ makro nazywał makro podobną do funkcji.

// Przykład3.C
#Define Add (x, y) x+y
int main ()

int a;
float b;
a = add (4,5);
B = Dodaj (2.5,3.6)
powrót 0;

W przykładzie3.C, Widzieliśmy, że w przeciwieństwie do funkcji C, makro zastępują tylko kod argumentami bez obliczania. Możemy więc przejść inny typ danych za pomocą tego samego makra.

Jeśli umieścimy przestrzeń między nazwą makro a nawiasem, działa tak samo jak makro podobne do obiektu. Poniżej C Przykład ilustruje to.

// Przykład4.C
#Define Add (x, y) x+y
int main ()

int a;
float b;
a = add (4,5);
B = Dodaj (2.5,3.6)

W przykładzie4.c, widzieliśmy, że makro dodaje się (x, y) x+y . To samo co makro podobne do obiektu.

3. Makro do wklejania tokenów:
W języku C ## Operator jest używany do wklejania tokenów. Korzystając z tego operatora, możemy połączyć dwa prawidłowe tokeny w jeden ważny token.
Przykład:

// Przykład5.C
#definicja Marge (x, y) x ## y
int main ()

int num = Marge (52,34);
powrót 0;

Jeśli spróbujemy tokować wklejanie, które nie generuje prawidłowego tokena, kompilator C daje błąd lub ostrzeżenie.

// Przykład6.C
#definicja Marge (x, y) x ## y
int main ()

int num = Marge (52,+);
powrót 0;

W Przykład6.C, Mamy komunikat o błędzie, ponieważ po kombinacji dwóch tokenów otrzymujemy nieprawidłowy token '52+'.

4. Makro do ciągnięcia:
W języku C # Operator służy do przekształcania parametru makro w stałą ciągów. Gdy operator # poprzedza parametrem makro, parametr przekształca się w literał ciąg. Stringowanie może być używane do makr obiektowych i funkcyjnych.
Przykład:

// Przykład7.C
#określić stringowanie (x) #x
int main ()

printf (Stringing (Hello World));
powrót 0;

W Przykład7.C Mamy ciąg „Hello World” za pomocą makra stringizowania.

Wniosek:

Ten artykuł dowiedział się o wszystkich rodzajach makro Makra podobne do obiektu, Makra podobne do funkcji, Makro do wklejania tokenów, Makro do ciągnięcia i makro do stringowania w języku C. Teraz możemy bez wątpienia użyć makro w naszym programie C.