Programowanie C

Makro w języku C

Makro w języku C
Makro w języku C to fragment kodu, któremu nadano nazwę. Gdy nazwa jest używana w dowolnym miejscu programu, wartość makra jest zastępowana przed kompilacją programu program. W tym artykule zobaczymy szczegółowo, jak napisać makro w języku C.

Rozważ następujący kod:

POCZĄTEK
CAŁKOWITA n=5;
PRINT("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.do
#define START int main()
#define KONIEC
#define INTEGER int
#define PRINT(A,B) printf(A,B)
POCZĄTEK
CAŁKOWITA n=5;
PRINT("Wartość n to %d",n);
KONIEC

Przed kompilacją makra START, INTEGER, PRINT i END zostały zastąpione ich wartością, a kod staje się poprawnym kodem C. Możemy to sprawdzić za pomocą następującego polecenia:

gcc -E Przykład1.do

To polecenie pojawi się po rozwinięciu wszystkich makr.

Teraz zobaczymy różne rodzaje makr:

1. Makra podobne do obiektów:

Składnia:

#define nazwa_makra wartość_makra

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

#define nazwa_makra wartość_makra1 \
wartość_makra2 \
makro_wartość3
#definiuj MAX 200

To makro wygląda jak obiekt danych, dlatego ten typ makra nazywa się makro podobnym do obiektu.

//Przykład2.do
//#zawierać
#definiuj MAX 200
int main()

printf("Wartość MAX to: %d",MAX);
zwróć 0;

W Przykład2.c, MAX jest makro. Z danych wyjściowych obserwujemy, że MAX zostaje zastąpiony przez jego wartość 200.

2. Makra podobne do funkcji:

Składnia:

#define nazwa_makra() wartość_makra

nazwa_makra to zdefiniowana przez użytkownika nazwa makra. Para nawiasów musi być umieszczona po nazwa_makra. Nie ma odstępów między nazwa_makra i nawiasy. Możemy również przekazywać argumenty w tego typu makrach.

#define dodaj(x,y) x+y

To makro wygląda jak wywołanie funkcji, dlatego ten typ makra nazywa się makro podobnym do funkcji.

//Przykład3.do
#define dodaj(x,y) x+y
int main()

int;
pływak b;
a = dodaj(4,5);
b = dodaj(2.5,3.6)
zwróć 0;

W przykładzie3.do, widzieliśmy, że w przeciwieństwie do funkcji C, makro zastępuje tylko kod z argumentami bez obliczania go. Możemy więc przekazać różne typy danych za pomocą tego samego makra.

Jeśli umieścimy spację między nazwą makra a nawiasem, działa to tak samo, jak makro obiektowe. Poniżej C Przykład ilustruje to.

//Przykład4.do
#define dodaj (x,y) x+y
int main()

int;
pływak b;
a = dodaj(4,5);
b = dodaj(2.5,3.6)

W przykładzie 4.c, widzieliśmy, że dodawanie makra zostało zastąpione przez (x,y) x+y . To samo, co makro obiektowe.

3. Makro do wklejania tokenów:
W języku C do wklejania tokenów używany jest operator ##. Używając tego operatora możemy połączyć dwa ważne tokeny w jeden ważny token.
Przykład:

//Przykład5.do
#define MARGE(x,y) x##y
int main()

int liczba = MARGE(52,34);
zwróć 0;

Jeśli spróbujemy wkleić token, który nie wygeneruje prawidłowego tokena, kompilator C wyświetli błąd lub ostrzeżenie.

//Przykład6.do
#define MARGE(x,y) x##y
int main()

int liczba = MARGE(52;+);
zwróć 0;

W Przykład6.do, mamy komunikat o błędzie, ponieważ po połączeniu dwóch tokenów otrzymujemy nieprawidłowy token '52+'.

4. Makro do tworzenia ciągów:
W języku C operator # służy do konwersji parametru makra na stałą łańcuchową. Gdy operator # poprzedza parametr makra, parametr jest konwertowany na literał ciągu. Ciągi mogą być używane do makr obiektowych i funkcyjnych.
Przykład:

//Przykład7.do
#define STRINGIZING(x) #x
int main()

printf(STRINGIZING(Witaj świecie) );
zwróć 0;

W Przykład 7.do mamy napis „Hello World” za pomocą makra STRINGIZING.

Wniosek:

W tym artykule poznałem wszystkie rodzaje makropodobnych Makra obiektowe, Makra podobne do funkcji, Makro do wklejania tokenów, Makro do tworzenia ciągów i makro do określania ciągów w języku C. Teraz bez żadnych wątpliwości możemy użyć makra w naszym programie C.

Gry Jak zainstalować League Of Legends na Ubuntu 14.04
Jak zainstalować League Of Legends na Ubuntu 14.04
Jeśli jesteś fanem League of Legends, to jest okazja do przetestowania League of Legends. Pamiętaj, że LOL jest obsługiwany w PlayOnLinux, jeśli jeste...
Gry Zainstaluj najnowszą grę strategiczną OpenRA na Ubuntu Linux
Zainstaluj najnowszą grę strategiczną OpenRA na Ubuntu Linux
OpenRA to darmowy silnik gier strategicznych czasu rzeczywistego, który odtwarza wczesne gry Westwood, takie jak klasyczny Command & Conquer: Red Aler...
Gry Zainstaluj najnowszy emulator Dolphin dla Gamecube i Wii w systemie Linux
Zainstaluj najnowszy emulator Dolphin dla Gamecube i Wii w systemie Linux
Emulator Dolphin pozwala grać w wybrane gry Gamecube i Wii na komputerach osobistych z systemem Linux (PC). Będąc ogólnodostępnym emulatorem gier o o...