Diferència entre Inline i Macro en C ++
Content
La macro és una instrucció que s’expandeix en el moment de la seva invocació. També es poden definir funcions, com ara macros. De la mateixa manera, les funcions en línia també s'amplien al punt de la seva invocació. Una diferència principal entre la funció en línia i la macro és que la funcions en línia s’amplien durant recopilació, i la macros s'ampliaran quan el programa el processa preprocessador.
Analitzem la diferència entre línia i macro amb l'ajut del gràfic de comparació.
- Gràfic de comparació
- Definició
- Diferències claus
- Conclusió
Gràfic de comparació
Bases per a la comparació | En linia | Macro |
---|---|---|
Bàsic | El compilador analitza les funcions en línia. | El preprocessador s’amplia les macros. |
Sintaxi | nom de retorn en línia_tip funció_ (paràmetres) {. . . } | #defineu nom_macro char_sequence |
Paraules clau utilitzades | en linia | #definir |
Definit | Es pot definir dins o fora de la classe. | Sempre es defineix al començament del programa. |
Avaluació | Valora l’argument una sola vegada. | Valora l’argument cada vegada que s’utilitza al codi. |
Expansió | El compilador pot no inclinar ni ampliar totes les funcions. | Les macros sempre s’amplien. |
Automatització | Les funcions curtes, definides a la classe, es fan automàticament en funcions en línia. | Les macros s'han de definir específicament. |
Accés | Una funció de membre en línia pot accedir a les dades dels membres de la classe. | Les macros mai no poden ser els membres de la classe i no poden accedir a les dades membres de la classe. |
Terminació | La definició de la funció en línia finalitza amb els claudàtors al final de la funció en línia. | La definició de la macro finalitza amb la nova línia. |
Depuració | El depuració és fàcil per a una funció en línia ja que la verificació d’errors es fa durant la compilació. | El depuració esdevé difícil per a les macros, ja que la verificació d'errors no es produeix durant la compilació. |
Enquadernació | Una funció en línia uneix totes les afirmacions del cos de la funció molt bé quan el cos de la funció comença i acaba amb els claudàtors. | Una macro s’enfronta al problema d’enllaç si té més d’una declaració, ja que no té cap símbol de terminació. |
Definició d’Inline
Una funció en línia sembla una funció regular, però està precedida de la paraula clau "en linia“. Les funcions en línia són funcions de curta durada que s'expandeixen en el moment de la seva invocació, en lloc de trucar-se. Entenem les funcions en línia amb un exemple.
#incloure Al programa anterior, vaig declarar i definir, la funció inicialitzar (), com a funció en línia a la classe "exemple". El codi de la funció d’inicialització () s’expandirà allà on l’invoca l’objecte de la classe “exemple”. La funció de visualització (), definida en l’exemple de classe no està declarada en línia però pot ser considerada en línia pel compilador, com en C ++ la funció definida dins de la classe es fa automàticament en línia per part del compilador tenint en compte la longitud de la funció. Macro és una "directiva dels preprocessadors". Abans de la compilació, el preprocessador examina el programa i, sempre que troba la macro al programa, substitueix aquesta macro per la seva definició. Per tant, la macro es considera com a "reemplaçament". Estudiem la macro amb un exemple. #incloure Al codi anterior, vaig declarar una funció macro GREAT (), que compara i troba el major nombre d'ambdós paràmetres. Podeu observar que no hi ha cap punt i coma per acabar la macro, ja que la macro es tanca només per la nova línia. Com que una macro és només un reemplaçament, expandirà el codi de macro allà on s'invoca. Les funcions en línia són molt més convincents que les funcions de macro. C ++ també proporciona una millor manera de definir una constant, que utilitza una paraula clau "const".
Definició de Macro
Conclusions: