Διαφορά μεταξύ Inline και Macro σε C ++
Περιεχόμενο
Η μακροεντολή είναι μια εντολή που επεκτείνεται κατά τη στιγμή της επίκλησής της. Μπορούν επίσης να οριστούν λειτουργίες, όπως μακροεντολές. Ομοίως, οι λειτουργίες inline αναπτύσσονται επίσης στο σημείο της επίκλησής τους. Μια κύρια διαφορά μεταξύ της λειτουργίας inline και της μακροεντολής είναι ότι το inline λειτουργίες επεκτάθηκαν κατά τη διάρκεια συλλογή, και το μακροεντολές επεκτείνονται όταν το πρόγραμμα επεξεργάζεται από το προεπεξεργαστής.
Ας μελετήσουμε τη διαφορά μεταξύ inline και macro με τη βοήθεια του πίνακα σύγκρισης.
- Συγκριτικό διάγραμμα
- Ορισμός
- Βασικές διαφορές
- συμπέρασμα
Συγκριτικό διάγραμμα
Βάση σύγκρισης | Στη γραμμή | Macro |
---|---|---|
Βασικός | Οι εσωτερικές λειτουργίες αναλύονται από τον μεταγλωττιστή. | Οι μακροεντολές επεκτείνονται από τον προεπεξεργαστή. |
Σύνταξη | inline return_type funct_name (παράμετροι) {. . . }} | #define όνομα_χρήστη char_sequence |
Χρησιμοποιούνται λέξεις-κλειδιά | στη γραμμή | #καθορίζω |
Ορίζεται | Μπορεί να οριστεί μέσα ή έξω από την τάξη. | Καθορίζεται πάντα στην αρχή του προγράμματος. |
Εκτίμηση | Αξιολογεί το επιχείρημα μόνο μία φορά. | Αξιολογεί το επιχείρημα κάθε φορά που χρησιμοποιείται στον κώδικα. |
Επέκταση | Ο μεταγλωττιστής δεν μπορεί να ενσωματωθεί και να επεκτείνει όλες τις λειτουργίες. | Οι μακροεντολές διευρύνονται πάντοτε. |
Αυτοματοποίηση | Οι σύντομες λειτουργίες που ορίζονται μέσα στην κλάση γίνονται αυτόματα σε ενσωματωμένες λειτουργίες. | Οι μακροεντολές πρέπει να οριστούν ειδικά. |
Πρόσβαση | Μια συνάρτηση inline μέλους μπορεί να έχει πρόσβαση στα μέλη δεδομένων της κλάσης. | Οι μακροεντολές δεν μπορούν ποτέ να είναι μέλη της τάξης και δεν έχουν πρόσβαση στα δεδομένα των μελών της τάξης. |
Λήξη | Ο ορισμός της λειτουργίας inline τερματίζεται με τις σγουρές αγκύλες στο τέλος της λειτουργίας inline. | Ο ορισμός της μακροεντολής τερματίζεται με τη νέα γραμμή. |
Debugging | Η αποσφαλμάτωση είναι εύκολη για μια λειτουργία inline καθώς ο έλεγχος σφαλμάτων γίνεται κατά τη διάρκεια της σύνταξης. | Η σάρωση γίνεται δύσκολη για τις μακροεντολές, καθώς ο έλεγχος σφαλμάτων δεν εμφανίζεται κατά τη διάρκεια της σύνταξης. |
Δεσμευτικός | Μια λειτουργία inline δεσμεύει πολύ καλά όλες τις δηλώσεις στο σώμα της λειτουργίας καθώς το σώμα της λειτουργίας αρχίζει και τελειώνει με τις σγουρές αγκύλες. | Μια μακροεντολή αντιμετωπίζει το πρόβλημα σύνδεσης εάν έχει περισσότερες από μία εντολές, καθώς δεν έχει σύμβολο τερματισμού. |
Ορισμός του Inline
Μια λειτουργία inline μοιάζει με μια κανονική λειτουργία, αλλά προηγείται της λέξης-κλειδί "στη γραμμή". Ενσωματωμένες λειτουργίες είναι λειτουργίες μικρού μήκους οι οποίες επεκτείνονται στο σημείο της κλήσης τους, αντί να καλούνται. Ας καταλάβουμε τις inline λειτουργίες με ένα παράδειγμα.
#περιλαμβάνω Στο παραπάνω πρόγραμμα, δηλώσαμε και ορίσαμε, η λειτουργία initialize (), ως συνάρτηση inline στην κλάση "example". Ο κώδικας της συνάρτησης αρχικοποίησης () θα επεκταθεί όπου θα καλείται από το αντικείμενο της κλάσης "παράδειγμα". Η οθόνη λειτουργίας (), που ορίζεται στο παράδειγμα κλάσης, δεν δηλώνεται εν σειρά, αλλά μπορεί να θεωρηθεί εν σειρά από τον μεταγλωττιστή, όπως στην C ++, η συνάρτηση που ορίζεται μέσα στην κλάση γίνεται αυτόματα από το compiler λαμβάνοντας υπόψη τη διάρκεια της λειτουργίας. Η μακροεντολή είναι μια "οδηγία προεπεξεργαστών". Πριν από τη σύνταξη, το πρόγραμμα εξετάζεται από τον προεπεξεργαστή και όπου βρίσκει τη μακροεντολή στο πρόγραμμα, αντικαθιστά τη μακροεντολή από τον ορισμό της. Ως εκ τούτου, η μακροεντολή θεωρείται ως "αντικατάσταση". Ας μελετήσουμε μακροεντολή με ένα παράδειγμα. #περιλαμβάνω Στον παραπάνω κώδικα, δηλώσαμε μια μακροεντολή GREATER (), η οποία συγκρίνει και βρίσκει τον μεγαλύτερο αριθμό και των δύο παραμέτρων. Μπορείτε να παρατηρήσετε ότι δεν υπάρχει ερωτηματικό για να τερματίσετε τη μακροεντολή καθώς η μακροεντολή τερματίζεται μόνο από τη νέα γραμμή. Δεδομένου ότι η μακροεντολή είναι απλώς μια αντικατάσταση, θα επεκτείνει τον κώδικα της μακροεντολής όπου γίνεται επίκληση. Οι λειτουργίες inline είναι πολύ πιο πειστικές από τη λειτουργία μακροεντολών. Το C ++ παρέχει επίσης έναν καλύτερο τρόπο για τον ορισμό μιας σταθεράς, η οποία χρησιμοποιεί μια λέξη-κλειδί "const".
Ορισμός της μακροεντολής
Συμπεράσματα: