Razlika med linijo in makro v C ++
Vsebina
Makro je navodilo, ki se razširi v času priklica. Funkcije lahko definirate tudi, kot makri. Prav tako se vmesne funkcije razširijo tudi na mestu njenega priklica. Glavna razlika med linijsko in makro funkcijo je, da je vgrajene funkcije se med kompilacija, in makroi se razširijo, ko program obdela program predprocesor.
Preučimo razliko med linijo in makro s pomočjo primerjalne tabele.
- Primerjalna tabela
- Opredelitev
- Ključne razlike
- Zaključek
Primerjalna tabela
Osnove za primerjavo | V vrsti | Makro |
---|---|---|
Osnovni | Vgrajene funkcije razdeli prevajalnik. | Makroje razširil predprocesor. |
Sintaksa | inline return_type funct_name (parametri) {. . . } | #define makro_ime char_sequence |
Uporabljene ključne besede | v vrsti | #define |
Določena | Določite ga lahko znotraj ali zunaj razreda. | Vedno je opredeljen na začetku programa. |
Vrednotenje | Argument oceni samo enkrat. | Argument oceni vsakič, ko je uporabljen v kodi. |
Razširitev | Prevajalnik ne more vgraditi in razširiti vseh funkcij. | Makroni so vedno razširjeni. |
Avtomatizacija | Kratke funkcije, definirane znotraj razreda, se samodejno opravijo na vgrajene funkcije. | Makrone je treba določiti posebej. |
Dostopanje | Funkcija vdelanega člana lahko dostopa do podatkovnih članov razreda. | Makroni nikoli ne morejo biti člani razreda in ne morejo dostopati do podatkovnih članov razreda. |
Prekinitev | Opredelitev vgrajene funkcije se konča s kodranimi oklepaji na koncu vdelane funkcije. | Opredelitev makra se konča z novo vrstico. |
Odpravljanje napak | Odpravljanje napak je enostavno za funkcijo vgrajenega, saj preverjanje napak poteka med prevajanjem. | Odpravljanje napak postane makrov težavno, saj preverjanje napak med prevajanjem ne pride. |
Vezava | Vgrajena funkcija zelo dobro veže vse stavke v telesu funkcije, saj se telo funkcije začne in konča s kodranimi oklepaji. | Makro se spopada s težavo vezave, če ima več stavkov, saj nima zaključnega simbola. |
Opredelitev Inline
Vgrajena funkcija je videti kot običajna funkcija, pred njo pa je ključna beseda „v vrsti". Vroče funkcije so funkcije kratke dolžine, ki se razširijo na mestu njenega priklica, namesto da bi jih poklicali. Razumejmo vgrajene funkcije s primerom.
#include V zgornjem programu sem deklariral in definiral funkcijo Initialize () kot vhodno funkcijo v razredu "example". Koda funkcije inicializacije () se bo razširila tam, kjer jo prikliče objekt razreda "primer". Zaslon funkcije (), opredeljen v primeru razreda, ni objavljen v liniji, vendar ga prevajalnik lahko šteje kot inline v C ++ funkcijo, definirano znotraj razreda, samodejno postavi inline s strani prevajalnika glede na dolžino funkcije. Makro je „direktiva o predprocesorjih“. Pred kompilacijo program pregleda predhodnik in kjerkoli najde makro v programu, ga nadomešča po svoji definiciji. Zato se makro šteje za "nadomestek". Preučimo makro s primerom. #include V zgornji kodi sem razglasil funkcijo makro GREATER (), ki primerja in najdem večje število obeh parametrov. Lahko opazite, da ni podpičja, ki bi zaključil makro, saj makro ukine samo nova vrstica. Ker je makro samo nadomestek, bo razširil kodo makra, kjer se prikliče. Vgrajene funkcije so veliko bolj prepričljive kot makro funkcije. C ++ ponuja tudi boljši način za določitev konstante, ki uporablja ključno besedo "const".
Opredelitev makra
Sklepi: