preprocessor directives c
Λεπτομερής ματιά στις οδηγίες προεπεξεργαστή στο C ++.
Ο προεπεξεργαστής είναι ένα μοναδικό χαρακτηριστικό του C ++. Στο C ++, έχουμε βήματα όπως συλλογή, σύνδεση και εκτέλεση για ένα τυπικό πρόγραμμα. Στην πραγματικότητα, έχουμε πολλές άλλες δυνατότητες σε ένα πρόγραμμα C ++ που πρέπει να υποβληθούν σε επεξεργασία πριν περάσουν το πρόγραμμα για συλλογή.
Για το σκοπό αυτό, πραγματοποιείται ένα ειδικό βήμα που ονομάζεται προεπεξεργασία. Η προεπεξεργασία πραγματοποιείται πριν από τη διαδικασία σύνταξης και τα ειδικά χαρακτηριστικά προεπεξεργάζονται. Ως αποτέλεσμα, λαμβάνεται ένα εκτεταμένο πρόγραμμα C ++ και μετά μεταφέρεται στον μεταγλωττιστή.
=> Επισκεφθείτε εδώ για να μάθετε C ++ από το μηδέν.
Τι θα μάθετε:
- ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
- Οδηγίες συμπερίληψης αρχείων
- Οδηγίες ορισμού μακροεντολών
- Οδηγίες σύνταξης υπό όρους
- Οι χειριστές # & ##
- Άλλες οδηγίες
- Προκαθορισμένες μακροεντολές
- συμπέρασμα
- Συνιστώμενη ανάγνωση
ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ
Τα ειδικά χαρακτηριστικά για την προεπεξεργασία προσδιορίζονται χρησιμοποιώντας μια οντότητα που ονομάζεται «Preprocessor Directive». Αυτές οι οδηγίες προεπεξεργαστή λένε στον μεταγλωττιστή ότι ορισμένες πληροφορίες στο πρόγραμμα C ++ που σημειώνονται με οδηγίες προεπεξεργαστή πρέπει να υποστούν προεπεξεργασία πριν από τη σύνταξη.
Σημειώστε ότι στο C ++ όλες οι οδηγίες προεπεξεργαστή ξεκινούν με το σύμβολο '#'. Τη στιγμή που ο προεπεξεργαστής (μέρος του μεταγλωττιστή) συναντά το σύμβολο #, οι πληροφορίες που ακολουθούν το σύμβολο # προεπεξεργάζονται πριν περάσουν το πρόγραμμα στον μεταγλωττιστή.
Σε αντίθεση με τις άλλες δηλώσεις C ++, οι οδηγίες προεπεξεργαστή δεν τελειώνουν με ερωτηματικό.
Σε αυτό το σεμινάριο, θα διερευνήσουμε τις διάφορες οδηγίες προεπεξεργαστών που υποστηρίζονται από το C ++.
Οδηγίες συμπερίληψης αρχείων
#περιλαμβάνω
Η οδηγία συμπερίληψης αρχείων #include μας επιτρέπει να συμπεριλάβουμε άλλα αρχεία στο πρόγραμμα προέλευσης. Μπορούμε να συμπεριλάβουμε οποιοδήποτε αρχείο κεφαλίδας που περιέχει ορισμούς διαφόρων προκαθορισμένων λειτουργιών στο πρόγραμμά μας χρησιμοποιώντας αυτές τις λειτουργίες. Μπορούμε να συμπεριλάβουμε αρχεία κεφαλίδας στο πρόγραμμά μας χρησιμοποιώντας την ακόλουθη σύνταξη.
#include
Παράδειγμα: #περιλαμβάνω
Το έχουμε ήδη δει στα προγράμματά μας C ++. Η επικεφαλίδα iostream περιέχει τις λειτουργίες που απαιτούνται για τη ροή δεδομένων εισόδου / εξόδου, όπως cout, cin κ.λπ.
Καθώς τα προγράμματά μας μεγαλώνουν ή η λειτουργικότητα γίνεται πολύπλοκη, ίσως θέλουμε να χωρίσουμε το πρόγραμμά μας σε διάφορα αρχεία ή να εισαγάγουμε λειτουργίες από τα άλλα αρχεία. Σε αυτήν την περίπτωση, χρησιμοποιούμε αρχεία που ορίζονται από το χρήστη. Για να συμπεριλάβουμε αρχεία που ορίζονται από το χρήστη στο πρόγραμμά μας μπορούμε να χρησιμοποιήσουμε την ακόλουθη σύνταξη της οδηγίας #include.
#include “filename”
Παράδειγμα: # συμπερίληψη 'vector_int.h'
Αυτό είναι ένα αρχείο κεφαλίδας που καθορίζεται από το χρήστη και σκοπεύουμε να συμπεριλάβουμε στο πρόγραμμά μας προκειμένου να χρησιμοποιήσουμε τη λειτουργικότητά του.
Το παρακάτω παράδειγμα κώδικα δείχνει τη χρήση της οδηγίας #include.
δοκιμές σε παραδείγματα δοκιμών λογισμικού
#include using namespace std; int main() { cout<<'This is an example demonstrating inclusion directive #include'; }
Παραγωγή:
Αυτό είναι ένα παράδειγμα που αποδεικνύει την οδηγία περί συμπερίληψης # include.
Όπως φαίνεται, χρησιμοποιήσαμε την οδηγία #include για να συμπεριλάβουμε τη λειτουργικότητα της κεφαλίδας στο πρόγραμμά μας.
Οδηγίες ορισμού μακροεντολών
#καθορίζω
Η οδηγία #define χρησιμοποιείται για τον καθορισμό των συμβολικών σταθερών ή μακροεντολών στο πρόγραμμα C ++.
Η γενική μορφή μιας # καθορισμένης οδηγίας είναι:
#define macro_name replacement code
Όταν ένας προεπεξεργαστής συναντά τη μακροεντολή στο πρόγραμμα, ο προεπεξεργαστής αντικαθιστά αυτήν τη μακροεντολή με τον κώδικα που ορίζεται χρησιμοποιώντας την οδηγία #define πριν από τον κωδικό μεταβιβάζεται στον μεταγλωττιστή.
Το παρακάτω παράδειγμα κώδικα δείχνει μια συμβολική σταθερά RADIUS που ορίζεται χρησιμοποιώντας την οδηγία #define και τη χρήση της στο πρόγραμμα.
#include #define RADIUS 5 using namespace std; int main() { cout<<'Area of a circle : '<<3.142 * RADIUS * RADIUS; }
Παραγωγή:
Περιοχή ενός κύκλου: 78.55
Όπως φαίνεται στο πρόγραμμα, μπορούμε να χρησιμοποιήσουμε τη συμβολική σταθερά RADIUS στον κώδικά μας και θα αντικατασταθεί από την τιμή που ορίζεται για αυτό χρησιμοποιώντας την οδηγία #define.
εφαρμογή ενός γραφήματος στο c ++
Μπορούμε να χρησιμοποιήσουμε την οδηγία #define για να ορίσουμε έναν κατάλληλο κωδικό λειτουργίας. Αυτές οι λειτουργίες είναι συνήθως μικρές.
Ένα παράδειγμα φαίνεται παρακάτω.
#include #define REC_AREA(length, breadth) (length * breadth) using namespace std; int main() { int length = 20, breadth = 5, area; area = REC_AREA(length, breadth); cout << 'Area of a rectangle is: ' << area; return 0; }
Παραγωγή:
Η περιοχή ενός ορθογωνίου είναι: 100
Εδώ χρησιμοποιώντας την οδηγία #define έχουμε ορίσει μια συνάρτηση REC_AREA που παίρνει δύο ορίσματα, δηλαδή μήκος και πλάτος και υπολογίζει την περιοχή ενός ορθογωνίου. Στην κύρια συνάρτηση, απλώς χρησιμοποιούμε αυτήν τη μακροεντολή και παρέχουμε δύο επιχειρήματα για να αποκτήσουμε την περιοχή ενός ορθογωνίου.
#undef
Οι μακροεντολές σε ένα πρόγραμμα που ορίζεται με την οδηγία #define διαρκούν έως ότου οριστεί χρησιμοποιώντας την οδηγία #undef. Μόλις το πρόγραμμα συναντήσει #undef, η επακόλουθη χρήση της μακροεντολής (μη καθορισμένη από #undef) θα δώσει ένα σφάλμα σύνταξης.
Στο παραπάνω πρόγραμμα, εάν δώσουμε μια δήλωση #undef REC_AREA μετά τις ακέραιες δηλώσεις, τότε το πρόγραμμα θα δώσει ένα σφάλμα σύνταξης.
Οδηγίες σύνταξης υπό όρους
Εκτός από τις οδηγίες που εξηγούνται παραπάνω, το C ++ παρέχει επίσης τις ακόλουθες οδηγίες που μπορούν να χρησιμοποιηθούν για τη σύνταξη κώδικα υπό όρους. Αυτές οι οδηγίες μπορούν να χρησιμοποιηθούν σε παρόμοιες γραμμές της δήλωσης if-else του C ++.
Για παράδειγμα, μπορούμε να ρυθμίσουμε το DEBUG για ένα πρόγραμμα ON ή OFF χρησιμοποιώντας αυτές τις οδηγίες υπό όρους.
Ορισμένες από τις οδηγίες σύνταξης υπό όρους που παρέχονται στο C ++ περιλαμβάνουν:
- #αν
- #elif
- #τέλος εαν
- #ifdef
- #ifndef
- #αλλού
Το παρακάτω πρόγραμμα δείχνει τη χρήση οδηγιών σύνταξης υπό όρους σε ένα πρόγραμμα C ++.
#include using namespace std; #define DEBUG #define MAX(a,b) (((a)>(b)) ? a : b) int main () { int i, j; i = 100; j = 50; #ifdef DEBUG cout <<'Trace: Start of main function' << endl; #endif cout <<'The maximum is ' << MAX(i, j) << endl; #undef MAX //cout <<'The maximum is ' << MAX(10,20) << endl; #ifdef DEBUG cout <<'Trace: End of main function' << endl; #endif return 0; }
Παραγωγή:
Ίχνος: Έναρξη της κύριας λειτουργίας
Το μέγιστο είναι 100
Ίχνος: Τέλος της κύριας λειτουργίας
Στο παραπάνω πρόγραμμα, χρησιμοποιούμε την οδηγία #ifdef - #endif για να ορίσουμε ένα DEBUG για το πρόγραμμα. Στη συνέχεια, καθορίσαμε τη συνάρτηση MAX μακροεντολών χρησιμοποιώντας την οδηγία #undef. Η οδηγία σύνταξης υπό όρους κατασκευάζει #ifdef - #endif ελέγχει εάν έχει οριστεί το DEBUG και αν έχει οριστεί, εκτυπώνει λίγα μηνύματα στο πρόγραμμα.
Οι χειριστές # & ##
Οι τελεστές # και ## είναι δύο ειδικοί τελεστές που χρησιμοποιούνται αντίστοιχα για να μετατρέψουν ένα διακριτικό κειμένου σε συμβολοσειρά που θα εμφανίζεται και συνδυάζει δύο διακριτικά.
Παρακάτω δίνεται ένα παράδειγμα που δείχνει και τους δύο αυτούς τελεστές.
#include using namespace std; #define MKSTR( x ) #x #define concat(a, b) a ## b int main () { cout <<'MKSTR(Hello World) = '<< MKSTR(Hello World) << endl; int xy = 100; cout <<'concat(x,y) = '< Παραγωγή:
MKSTR (Hello World) = Γεια σας Κόσμος
concat (x, y) = 100
Στο παραπάνω πρόγραμμα, ορίζουμε το MKSTR με ένα όρισμα x. Έχει σώμα #x. Όταν εκτυπώνουμε αυτό το MKSTR χρησιμοποιώντας το όρισμα 'Hello World', βλέπουμε ότι λόγω του #x, το όρισμα μετατρέπεται σε συμβολοσειρά και εμφανίζεται στην έξοδο.
Στη συνέχεια, έχουμε ορίσει μια συνάρτηση συνόδου με δύο ορίσματα α και β. Στο σώμα καθορίζουμε ένα ## b. Η έκφραση a ## b ισούται με ab. Έτσι, στην κύρια συνάρτηση όταν καλούμε concat (x, y), στην πραγματικότητα αξιολογεί το xy που είναι ίσο με την ακέραια μεταβλητή που ορίσαμε.
Άλλες οδηγίες
#λάθος
Η γενική σύνταξη της οδηγίας #error είναι:
#error error_message
Όταν ο μεταγλωττιστής αντιμετωπίζει την εντολή #error, εμφανίζει το μήνυμα σφάλματος και η συλλογή σταματά. Το όρισμα error_message μπορεί να περιέχει μία ή περισσότερες λέξεις με ή χωρίς εισαγωγικά.
#γραμμή
Αυτό λέει στον μεταγλωττιστή να αλλάξει τον εσωτερικό αριθμό γραμμής και το όνομα αρχείου του μεταγλωττιστή στον δεδομένο αριθμό γραμμής και το όνομα αρχείου.
#γραμμή ψηφία-ακολουθία («όνομα αρχείου»)
Το digit_sequence μπορεί να είναι ακέραια σταθερά.
Παράδειγμα:# γραμμή 200 test.c
Στο παραπάνω παράδειγμα, ο εσωτερικά αποθηκευμένος αριθμός γραμμής ορίζεται σε 200 και το όνομα αρχείου αλλάζει σε test.c.
#pragma
Παρέχει καθοριζόμενες από την εφαρμογή οδηγίες στον μεταγλωττιστή. Αυτές οι οδηγίες αφορούν συγκεκριμένα τον μεταγλωττιστή και την πλατφόρμα. Εάν η οδηγία δεν ταιριάζει, η οδηγία αγνοείται χωρίς να δημιουργηθεί σφάλμα σύνταξης.
Προκαθορισμένες μακροεντολές
Το C ++ ορίζει επίσης πολλές προκαθορισμένες μακροεντολές που μπορούν να χρησιμοποιηθούν από τους προγραμματιστές.
Μερικές από αυτές τις μακροεντολές παρουσιάζονται παρακάτω.
Προκαθορισμένη μακροεντολή Περιγραφή __ΑΡΧΕΙΟ__ Το τρέχον όνομα αρχείου του προγράμματος που καταρτίζεται __ΗΜΕΡΟΜΗΝΙΑ__ Ημερομηνία μετάφρασης του πηγαίου κώδικα σε κώδικα αντικειμένου με τη μορφή μήνα / ημέρα / έτος __ΧΡΟΝΟΣ__ Χρόνος στη φόρμα ώρα: λεπτό: δευτερόλεπτο κατά το οποίο καταρτίζεται το πρόγραμμα __ΓΡΑΜΜΗ__ Ο τρέχων αριθμός γραμμής του προγράμματος που καταρτίζεται __cplusplus Ακεραία σταθερά που ορίζεται για κάθε έκδοση μεταγλωττιστή
Το παρακάτω πρόγραμμα δείχνει αυτές τις μακροεντολές σε ένα πρόγραμμα.
Ο ευκολότερος τρόπος για να προσθέσετε τις τιμές σε έναν πίνακα είναι να χρησιμοποιήσετε
#include using namespace std; int main () { cout<<'__LINE__ :' << __LINE__ << endl; cout<<'__FILE__ :' << __FILE__ << endl; cout<<'__DATE__ :' << __DATE__ << endl; cout<<'__TIME__ :' << __TIME__ << endl; cout<<'__cplusplus:'<<__cplusplus< Παραγωγή:
__LINE__: 5
__FILE__: prog.cpp
__ ΗΜΕΡΟΜΗΝΙΑ__: 15 Απριλίου 2019
__TIME__: 12: 09: 15
__cplusplus: 201402
Το παραπάνω πρόγραμμα είναι σύμφωνο με την επεξήγηση των προκαθορισμένων μακροεντολών παραπάνω και είναι αυτονόητο.
συμπέρασμα
Σε αυτό το σεμινάριο, έχουμε δει διάφορες οδηγίες προεπεξεργαστή που παρέχονται από το C ++ μαζί με τα παραδείγματα τους. Οι οδηγίες προεπεξεργαστών μας βοηθούν να γράψουμε πιο αποτελεσματικά προγράμματα και πιο ευανάγνωστα προγράμματα σε κάποιο βαθμό.
Οι οδηγίες σύνταξης υπό όρους μας επιτρέπουν επίσης να διακλάδουμε την έξοδο του προγράμματος με διάφορους τρόπους.
=> Αναζητήστε ολόκληρη τη σειρά προπόνησης C ++ εδώ.
Συνιστώμενη ανάγνωση
- Δοκιμή λογισμικού Βοήθεια Πρόγραμμα συνεργατών!
- Γράψτε και Κερδίστε - Πρόγραμμα για έμπειρους δοκιμαστές QA
- Tutorial Unix Pipes: Pipes in Unix Programming
- Λειτουργίες βιβλιοθήκης στο C ++
- 70+ ΚΑΛΥΤΕΡΑ C ++ Tutorials για να μάθετε C ++ Προγραμματισμό ΔΩΡΕΑΝ
- Επιχειρήματα γραμμής εντολών στο C ++
- Επαναληπτές στο STL
- Λίστες Initializer στο C ++