Razlika između inline i makronaredbe u C ++
Sadržaj
Makro je upute koje se proširuju u trenutku njegovog poziva. Funkcije se također mogu definirati, poput makronaredbi. Slično tome, inline funkcije se proširuju i na mjestu njegovog prizivanja. Jedna glavna razlika između inline i makro funkcije je ta inline funkcije proširuju se tijekom kompilacija, i makronaredbe proširuju se kada program obrađuje Preprocessoru.
Ispitajmo razliku između inline i makronaredbe uz pomoć usporednog grafikona.
- Usporedni grafikon
- definicija
- Ključne razlike
- Zaključak
Usporedni grafikon
Osnove za usporedbu | U redu | makro |
---|---|---|
Osnovni, temeljni | Inline funkcije kompajlera raščlanjuju. | Makronaredbe proširuje makroprocesor. |
Sintaksa | inline return_type funct_name (parametri) {. , , } | #define makro_ime char_sequence |
Korištene ključne riječi | u redu | #definirati |
definiran | Može se definirati unutar ili izvan klase. | Uvijek se definira na početku programa. |
procjena | Argument procjenjuje samo jednom. | Argument procjenjuje svaki put kad se koristi u kodu. |
ekspanzija | Kompajler možda ne uključuje i proširuje sve funkcije. | Makroni su uvijek prošireni. |
Automatizacija | Kratke funkcije, definirane unutar klase, automatski se izvršavaju u ugrađenim funkcijama. | Makronaredbe treba posebno definirati. |
Pristup | Funkcija unutarnjih članova može pristupiti podacima članovima klase. | Makroni nikada ne mogu biti članovi klase i ne mogu pristupiti podacima članovima klase. |
završetak | Definicija inline funkcije završava kovrčavim zagradama na kraju inline funkcije. | Definicija makronaredbi prestaje s novim retkom. |
ispravljanje pogrešaka | Rješavanje pogrešaka jednostavno je za ugrađenu funkciju jer se provjera pogreške vrši tijekom kompilacije. | Otklanjanje pogrešaka postaje teško za makronaredbe jer se provjera pogreške ne događa tijekom kompilacije. |
vezivanje | Inline funkcija vrlo dobro veže sve iskaze u tijelu funkcije kao i tijelo funkcije, koje započinje i završava sa kovrčavim zagradama. | Makronaredba se suočava s problemom vezanja ako ima više izraza jer nema simbol za završetak. |
Definicija Inlinea
Ugrađena funkcija izgleda kao uobičajena funkcija, ali joj prethodi ključna riječ "u redu„. Inline funkcije su funkcije kratke duljine koje se proširuju na mjestu njezina poziva, umjesto da se zovu. Shvatimo umetanje funkcija na primjeru.
#include U gornjem programu sam deklarirao i definirao funkciju inicijalizirati (), kao inline funkciju u klasi „primjer“. Kôd funkcije inicijalizacije () proširit će se tamo gdje je na njega pozvao objekt klase "primjer". Prikaz funkcije (), definiran u primjeru klase, nije deklarisan inline, ali prevoditelj ga može smatrati inline u C ++, funkciju definiranu unutar klase automatski sastavlja inline od strane prevoditelja uzimajući u obzir duljinu funkcije. Makro je "direktiva za procesore". Prije sastavljanja, program pregledava predprocesor i tamo gdje ga ikad pronađe makronaredba, on ga zamjenjuje svojom definicijom. Stoga se makro smatra „zamjenom“. Proučimo makro na primjeru. #include U gornjem kôdu najavio sam makro funkciju GREATER (), koja uspoređuje i pronalazi veći broj oba parametra. Možete primijetiti da ne postoji točka s zarezom koja bi ukinula makronaredbu jer je makronaredba ukinuta samo novim retkom. Kako je makronaredba samo zamjena, tako će se proširiti i kod makronaredbe na koji se poziva. Inline funkcije puno su uvjerljivije od makro funkcije. C ++ također pruža bolji način definiranja konstante koja koristi ključnu riječ "const".
Definicija makronaredbe
Zaključak: