Differenza tra Inline e Macro in C ++
Contenuto
La macro è un'istruzione che si espande al momento della sua invocazione. Le funzioni possono anche essere definite, come le macro. Allo stesso modo, anche le funzioni inline si espandono nel punto della sua invocazione. Una differenza principale tra la funzione inline e la macro è che funzioni incorporate vengono espansi durante compilazione, e il macro vengono espansi quando il programma viene elaborato dal preprocessore.
Studiamo la differenza tra inline e macro con l'aiuto del grafico di confronto.
- Tabella di comparazione
- Definizione
- Differenze chiave
- Conclusione
Tabella di comparazione
Base per il confronto | In linea | macro |
---|---|---|
Di base | Le funzioni incorporate vengono analizzate dal compilatore. | Le macro vengono espanse dal preprocessore. |
Sintassi | inline return_type funct_name (parametri) {. . . } | #define nome_ macro char_sequence |
Parole chiave utilizzate | in linea | #definire |
definito | Può essere definito all'interno o all'esterno della classe. | È sempre definito all'inizio del programma. |
Valutazione | Valuta l'argomento una sola volta. | Valuta l'argomento ogni volta che viene utilizzato nel codice. |
Espansione | Il compilatore potrebbe non essere integrato ed espandere tutte le funzioni. | Le macro sono sempre espanse. |
Automazione | Le funzioni brevi, definite all'interno della classe, vengono automaticamente trasformate in funzioni incorporate. | Le macro dovrebbero essere definite in modo specifico. |
Accesso | Una funzione membro in linea può accedere ai membri dei dati della classe. | Le macro non possono mai essere membri della classe e non possono accedere ai membri dei dati della classe. |
fine | La definizione della funzione in linea termina con le parentesi graffe alla fine della funzione in linea. | La definizione di macro termina con la nuova riga. |
Debug | Il debug è facile per una funzione incorporata poiché il controllo degli errori viene eseguito durante la compilazione. | Il debug diventa difficile per le macro poiché il controllo degli errori non si verifica durante la compilazione. |
Rilegatura | Una funzione incorporata lega molto bene tutte le istruzioni nel corpo della funzione poiché il corpo della funzione inizia e termina con le parentesi graffe. | Una macro deve affrontare il problema dell'associazione se ha più di un'istruzione, poiché non ha un simbolo di terminazione. |
Definizione Inline
Una funzione in linea sembra una funzione normale ma è preceduta dalla parola chiave "in linea“. Le funzioni incorporate sono funzioni di breve durata che vengono espanse nel punto della sua invocazione, anziché essere chiamate. Comprendiamo le funzioni incorporate con un esempio.
#includere Nel programma sopra, ho dichiarato e definito, la funzione initialize (), come una funzione incorporata nella classe "esempio". Il codice della funzione di inizializzazione () si espanderà dove viene invocato dall'oggetto della classe "esempio". La funzione display (), definita nell'esempio di classe non è dichiarata in linea ma può essere considerata in linea dal compilatore, come in C ++ le funzioni definite all'interno della classe vengono automaticamente rese in linea dal compilatore considerando la lunghezza della funzione. Macro è una "direttiva preprocessori". Prima della compilazione, il programma viene esaminato dal preprocessore e ovunque trova la macro nel programma, sostituisce quella macro con la sua definizione. Quindi, la macro è considerata la "sostituzione". Studiamo la macro con un esempio. #includere Nel codice sopra, ho dichiarato una funzione macro GREATER (), che confronta e trova il maggior numero di entrambi i parametri. È possibile osservare che non esiste un punto e virgola per terminare la macro poiché la macro viene terminata solo dalla nuova riga. Poiché una macro è solo una sostituzione, espanderà il codice della macro dove viene invocata. Le funzioni in linea sono molto più convincenti della funzione macro. C ++ fornisce anche un modo migliore per definire una costante, che utilizza una parola chiave "const".
Definizione di Macro
conclusioni: