C programavimas

Makrokomanda C kalba

Makrokomanda C kalba
Makrokomanda C kalba yra kodo dalis, kuriai priskirtas vardas. Kai vardas naudojamas bet kurioje programos vietoje, makrokomanda vertė pakeičiama prieš kompiliuojant programą. Šiame straipsnyje mes išsamiai pamatysime, kaip rašyti makrokomandą C kalba.

Apsvarstykite šį kodą:

PRADĖTI
INTEGRAS n = 5;
PRINT ("n reikšmė yra% d", n);
GALAS

Anksčiau pateiktas kodas nėra galiojantis C kodas.

Bet galioja šis kodas:

// 1 pavyzdys.c
#define START int main ()
#define END
#define INTEGER int
#define PRINT (A, B) printf (A, B)
PRADĖTI
INTEGRAS n = 5;
PRINT ("n reikšmė yra% d", n);
GALAS

Prieš sudarant makrokomandas START, INTEGER, PRINT ir END buvo pakeista jų verte, o kodas tampa galiojančiu C kodu. Mes galime patikrinti naudodami šią komandą:

gcc -E1 pavyzdys.c

Ši komanda bus rodoma išplėtus visas makrokomandas.

Dabar pamatysime įvairių tipų makrokomandas:

1. Į objektą panašios makrokomandos:

Sintaksė:

#define macro_name macro_value

Jei makrokomanda užima daugiau nei vieną eilutę, galime tai padaryti taip:

#define macro_name macro_value1 \
macro_value2 \
macro_value3
#define MAX 200

Ši makrokomanda atrodo kaip duomenų objektas, todėl šio tipo makrokomandos vadinamos kaip į objektą panašios makrokomandos.

// 2 pavyzdys.c
// # įtraukti
#define MAX 200
int main ()

printf ("MAX reikšmė yra:% d", MAX);
grąžinti 0;

Į Exapmle2.c, MAX yra makrokomanda. Iš išvesties mes tai stebime MAKS pakeičiama jo verte 200.

2. Į funkcijas panašios makrokomandos:

Sintaksė:

#define macro_name () makro_value

makro_pavadinimas yra vartotojo nustatytas makrokomandos pavadinimas. Pora skliaustų turi būti dedama po makro_pavadinimas. Tarpų tarpas nėra leidžiamas makro_pavadinimas ir skliausteliuose. Taip pat galime perduoti argumentus šio tipo makrokomandose.

#define add (x, y) x + y

Ši makrokomanda atrodo kaip funkcijos iškvietimas, todėl šio tipo makrokomandos vadinamos panašia į funkciją makrokomanda.

// 3 pavyzdys.c
#define add (x, y) x + y
int main ()

int a;
plūdė b;
a = pridėti (4,5);
b = pridėti (2.5,3.6)
grąžinti 0;

3 pavyzdyje.c, matėme, kad skirtingai nei C funkcija, makrokomanda tik kodą pakeičia argumentais, jo neapskaičiuodama. Taigi, mes galime perduoti skirtingus duomenų tipus naudodami tą pačią makrokomandą.

Jei tarp makrokomandos pavadinimo ir skliaustų dedame tarpą, tai veikia kaip makrokomanda, panaši į objektą. Žemiau C pavyzdys tai iliustruoja.

// 4 pavyzdys.c
#define add (x, y) x + y
int main ()

int a;
plūdė b;
a = pridėti (4,5);
b = pridėti (2.5,3.6)

4 pavyzdyje.c, matėme, kad makrokomandos pridėjimas pakeičiamas (x, y) x + y . Tas pats kaip makrokomanda, panaši į objektą.

3. Žetonų įklijavimo makrokomanda:
C kalba žetonų įklijavimui naudojamas operatorius ##. Naudodami šį operatorių, du galiojančius prieigos raktus galime sujungti į vieną galiojantį prieigos raktą.
Pavyzdys:

5 pavyzdys.c
#define MARGE (x, y) x ## y
int main ()

int skaičius = MARGE (52,34);
grąžinti 0;

Jei bandome įklijuoti prieigos raktą, kuris nesukuria galiojančio prieigos rakto, C kompiliatorius pateikia klaidą arba įspėjimą.

// 6 pavyzdys.c
#define MARGE (x, y) x ## y
int main ()

int skaičius = MARGE (52, +);
grąžinti 0;

Į 6 pavyzdys.c, turime klaidos pranešimą, nes, sujungus du žetonus, gauname neteisingą prieigos raktą „52 +“.

4. Struktūravimo makrokomanda:
C kalba # operatorius naudojamas makrokomandos parametrą paversti eilutės konstanta. Kai prieš # operatorių yra makrokomandos parametras, parametras konvertuojamas į eilutės literalį. Stringavimas gali būti naudojamas objektų ir funkcijų tipo makrokomandoms.
Pavyzdys:

// 7 pavyzdys.c
#define STRINGIZING (x) #x
int main ()

printf (STRINGIZING (Hello World));
grąžinti 0;

Į 7 pavyzdys.c gavome eilutę „Sveikas pasaulis“, naudojant makrokomandą STRINGIZING.

Išvada:

Šis straipsnis sužinojo apie visų tipų makrokomandas Į objektą panašios makrokomandos, Į funkcijas panašios makrokomandos, Žetonų įklijavimo makrokomanda, Makrokomanda, skirta gryninti, ir makrokomanda, skirta gryninti C kalba. Dabar be jokios abejonės galime naudoti makrokomandą savo C programoje.

Geriausi žaidimai, kuriuos reikia žaisti naudojant rankos stebėjimą
„Oculus Quest“ neseniai pristatė puikią rankos stebėjimo be valdiklių idėją. „Oculus Quest“ rankų sekimo žaidimai iki šiol buvo ribojami, kai žaidimų ...
Kaip rodyti OSD perdangą viso ekrano „Linux“ programose ir žaidimuose
Žaisdami viso ekrano žaidimus arba naudodamiesi programomis be išsiblaškymo viso ekrano režimu, galite nutraukti nuo susijusios sistemos informacijos,...
5 geriausios žaidimų fiksavimo kortos
Visi mes matėme ir pamėgome srautinius žaidimus „YouTube“. „PewDiePie“, „Jakesepticye“ ir „Markiplier“ yra tik vieni iš geriausių žaidėjų, kurie uždir...