Μακροεντολή C++ __FILE__

Makroentole C File



Οι μακροεντολές είναι κάποιο κομμάτι κώδικα σε κάποιο σενάριο που έχει κάποιο συγκεκριμένο όνομα. Όταν κάποια από τις μακροεντολές εκτελείται, ο κώδικας πίσω από αυτές εκτελείται για να εκτελέσει μια συγκεκριμένη εργασία. Έτσι ακριβώς, το __FILE__ είναι μια μακροεντολή που χρησιμοποιείται στη γλώσσα C++ για να πάρει τη διαδρομή σε ένα συγκεκριμένο αρχείο. Έτσι, σήμερα σε αυτόν τον οδηγό, θα συζητήσουμε τη λειτουργία μιας μακροεντολής C++ __FILE__.

Παράδειγμα 01:

Ας πάρουμε το πρώτο παράδειγμα της μακροεντολής __FILE__ στη C++ ξεκινώντας την εφαρμογή της κονσόλας τερματικού. Μπορεί να χρησιμοποιείτε τη συντόμευση 'Ctrl+Alt+T' για να το κάνετε αυτό. Ένας άλλος τρόπος για να ανοίξετε το κέλυφος είναι να χρησιμοποιήσετε την περιοχή του μενού Δραστηριότητα εάν ξεχάσατε το πλήκτρο συντόμευσης. Μετά την εκκίνηση της κονσόλας τερματικού στην οθόνη σας, δοκιμάστε να δημιουργήσετε ένα νέο αρχείο c++ για να κάνετε κώδικα σε αυτό. Ένα αρχείο μπορεί να δημιουργηθεί με ένα απλό ερώτημα «αγγίγματος», όπως φαίνεται στη συνημμένη εικόνα παρακάτω. Το όνομα ενός αρχείου που δημιουργήθηκε πρόσφατα πρέπει να δίνεται με τη λέξη-κλειδί 'touch'.







Πρέπει να υπάρχει εγκατεστημένο πρόγραμμα επεξεργασίας στο σύστημα Ubuntu 20.04 Linux για να το χρησιμοποιήσετε για την κωδικοποίηση και το άνοιγμα των νέων αρχείων. Οι πιο συνιστώμενοι επεξεργαστές ευρέως γνωστοί μεταξύ των χρηστών Linux είναι το GNU Nano και το Vim editor. Εκτός από αυτό, το πρόγραμμα επεξεργασίας κειμένου μπορεί επίσης να χρησιμοποιηθεί σε περίπτωση που και οι δύο προαναφερθέντες επεξεργαστές δεν λειτουργούν. Έτσι, έχουμε ήδη εγκαταστήσει τον επεξεργαστή GNU Nano. Έτσι, θα το χρησιμοποιήσουμε για να ανοίξουμε και να επεξεργαστούμε το αρχείο για να δημιουργήσουμε κώδικα. Χρησιμοποιήστε τη λέξη-κλειδί 'nano' μαζί με το όνομα του αρχείου για να κάνετε το πρόγραμμα επεξεργασίας να λειτουργήσει.





Τώρα, το νέο αρχείο C++ macro.cc που δημιουργήθηκε είναι έτοιμο για κωδικοποίηση στο πρόγραμμα επεξεργασίας. Ας ξεκινήσουμε την εφαρμογή κώδικα C++ καθώς υλοποιούμε αυτό το άρθρο για να δούμε τη λειτουργία της μακροεντολής __FILE__. Ξεκινήσαμε τον κώδικα C++ προσθέτοντας την τυπική κεφαλίδα εισόδου-εξόδου στο επάνω μέρος του. Η λέξη-κλειδί 'συμπεριλαμβάνω' έχει χρησιμοποιηθεί με το σύμβολο κατακερματισμού για να γίνει αυτό. Χωρίς αυτήν την κεφαλίδα, η είσοδος και η έξοδος του κώδικα C++ δεν θα λειτουργούν στην κονσόλα κατά τη μεταγλώττιση και την εκτέλεση.





Η μέθοδος main() είναι ο βασικός πυλώνας του κώδικά μας καθώς η εκτέλεση ξεκινά από αυτόν και καταλήγει σε αυτόν. Μέσα στη μέθοδο main(), θα γίνει η πραγματική εργασία. Χρησιμοποιήσαμε έναν κώδικα μιας γραμμής στη μέθοδο main() για να περιγράψουμε τη λειτουργικότητα της μακροεντολής __FILE__. Έτσι, η πρόταση printf έχει χρησιμοποιηθεί εδώ, λαμβάνοντας τις δύο τιμές ως ορίσματα, δηλαδή τη συμβολοσειρά που παίρνει το όνομα του αρχείου και τη συνάρτηση μακροεντολής.

Η μακροεντολή __FILE__ χρησιμοποιείται εδώ για να αποκτήσει την τρέχουσα διαδρομή αρχείου ή το όνομά της. Ενώ το '%S' χρησιμοποιείται για την εκτύπωση της τρέχουσας διαδρομής ενός αρχείου ή του ονόματός του μέσα σε μια συμβολοσειρά. Πρέπει να αποθηκεύσετε τον κωδικό σας πριν από την εκτέλεση με τη βοήθεια μιας συντόμευσης 'Ctrl+S'. Τώρα ο κώδικας έχει αποθηκευτεί, δοκιμάστε να επιστρέψετε στο τερματικό του κελύφους χρησιμοποιώντας τη συντόμευση 'Ctrl+X'.



Καθώς τελειώσαμε με τον κώδικα C++ για τη μακροεντολή __FILE__, ας ξεκινήσουμε τη μεταγλώττιση του κώδικα C++. Για τη μεταγλώττιση, έχουμε ήδη εγκαταστήσει τον μεταγλωττιστή g++ για τη μεταγλώττιση του κώδικα C++. Έτσι, ο μεταγλωττιστής g++ έχει χρησιμοποιηθεί στο τερματικό για τη μεταγλώττιση του αρχείου 'macro.cc'. Κατά τη μεταγλώττιση, δεν επιστρέφει τίποτα, πράγμα που δείχνει ότι ο κώδικας C++ που βρίσκεται μέσα στο αρχείο macro.cc είναι σημασιολογικά σωστός. Μετά τη μεταγλώττιση έρχονται οι στροφές για την εκτέλεση ενός κώδικα. Για την εκτέλεση του αρχείου κώδικα, τείνουμε να χρησιμοποιούμε το απλό ερώτημα './.aout'. Κατά την εκτέλεση του αρχείου macro.cc, έχουμε ως αντάλλαγμα το όνομα ενός αρχείου. Έτσι λειτουργεί η μακροεντολή C++ __FILE__.

Παράδειγμα 02:

Ας δούμε ένα άλλο παράδειγμα για να εξετάσουμε τη λειτουργικότητα της μακροεντολής C++ __FILE__ στο σύστημα Ubuntu 20.04. Όπως είδαμε πώς λειτουργεί η μακροεντολή C++ __FILE__ όταν έχει χρησιμοποιηθεί για την ανάκτηση της διαδρομής αρχείου ενός αρχείου στο οποίο έχει αναφερθεί.

Τώρα, θα χρησιμοποιήσουμε τη μακροεντολή C++ __FILE__ για να λάβουμε τη διαδρομή αρχείου ή το όνομα ενός αρχείου διαφορετικό από το αρχείο στο οποίο εργαζόμαστε αυτήν τη στιγμή. Έτσι, έχουμε ανοίξει το ίδιο αρχείο macro.cc στον επεξεργαστή GNU Nano για να ενημερώσουμε τον κώδικα. Προσθέσαμε την τυπική κεφαλίδα εισόδου-εξόδου με τη λέξη-κλειδί συμπερίληψης και αρχικοποιήσαμε μια συνάρτηση main() με τον τύπο επιστροφής ακέραιου αριθμού.

Μέσα στη μέθοδο main(), η πρώτη πρόταση εκτύπωσης είναι ίδια με την παλιά για να λάβουμε την τρέχουσα διαδρομή αρχείου στην οποία εργαζόμαστε αυτήν τη στιγμή. Μετά από αυτό, χρησιμοποιήσαμε τη λέξη-κλειδί #line με άλλο όνομα αρχείου, π.χ. 'new.txt' στην επόμενη διαδοχική γραμμή. Αυτό γίνεται για να καθορίσουμε το αρχείο διαφορετικό από το τρέχον αρχείο για το οποίο θα λάβουμε το όνομά του ή μια διαδρομή. Η επόμενη πρόταση printf έχει χρησιμοποιηθεί για την εκτύπωση της διαδρομής ενός αρχείου 'new.txt' με τη βοήθεια μιας μακροεντολής C++ __FILE__. Αποθηκεύστε τον πρόσφατα ενημερωμένο κωδικό σας για να αποφύγετε οποιαδήποτε ταλαιπωρία κατά τη στιγμή της μεταγλώττισης. Χρησιμοποιήστε 'Ctrl+S' για να το κάνετε.

Αφού αποθηκεύσετε το ενημερωμένο αρχείο, κλείστε το μέσω του 'Ctrl+X' από το πληκτρολόγιό σας. Τώρα, επιστρέφουμε στην οθόνη του κελύφους.

Ας μεταγλωττίσουμε το ενημερωμένο αρχείο. Χρησιμοποιήστε τον μεταγλωττιστή g++ για να το κάνετε με το όνομα ενός αρχείου macro.cc. Μετά την επιτυχή μεταγλώττιση, εκτελέστε τον κώδικα με την εντολή './a.out' στην κονσόλα. Η έξοδος δείχνει πρώτα τη διαδρομή προς ένα τρέχον αρχείο και, στη συνέχεια, στην οθόνη του κελύφους εμφανίζεται η διαδρομή προς το άλλο αρχείο, το 'new.txt'. Δείτε πόσο εύκολο είναι να χρησιμοποιήσετε τη μακροεντολή __FILE__ για να εμφανίσετε τη διαδρομή του αρχείου στο κέλυφος.

Παράδειγμα 03:

Ας ρίξουμε μια ματιά στη μακροεντολή __LINE__ μαζί με τη μακροεντολή __FILE__ στη C++. Η μακροεντολή __LINE__ θα εμφανίσει τον αριθμό γραμμής του αρχείου στο οποίο έχει χρησιμοποιηθεί η μακροεντολή. Επομένως, ανοίξτε το ίδιο αρχείο και ενημερώστε και τις δύο δηλώσεις printf. Πριν από τη μακροεντολή C++ __LINE__, προσθέσαμε τη μακροεντολή C++ __LINE__. Αυτή η __LINE__μακροεντολή λαμβάνει τον αριθμό γραμμής ενός τρέχοντος αρχείου όπου το __FILE__ έρχεται πρώτο. Ενώ η επόμενη μακροεντολή __LINE__ θα λάβει τον αριθμό της πρώτης γραμμής του άλλου αρχείου, επειδή έχουμε ήδη αναφέρει τον αριθμό γραμμής με το όνομα αρχείου στον κώδικα.

Μετά την αποθήκευση και την έξοδο από το αρχείο, έχουμε επιστρέψει στο τερματικό του κελύφους. Χρησιμοποιούμε την ίδια εντολή g++ για να μεταγλωττίσουμε τον κώδικα αρχείου macro.cc C++. Η επιτυχημένη μεταγλώττιση οδηγεί στην εντολή εκτέλεσης. Τώρα η εντολή './a.out' χρησιμοποιείται εδώ για να γίνει αυτό. Η εκτέλεση μας λέει ότι το πρώτο αρχείο, δηλαδή το τρέχον αρχείο στη γραμμή 3, ενώ η μακροεντολή __FILE__ βρίσκεται στην πρώτη γραμμή του άλλου αρχείου που αναφέρεται στον κώδικα.

Συμπέρασμα:

Αυτό το άρθρο περιέχει τον ορισμό των μακροεντολών και εξετάζει τη χρήση της μακροεντολής C++ __FILE__ στο σύστημα Ubuntu 20.04. Η μακροεντολή C++ __LINE__ έχει επίσης συζητηθεί σε ορισμένα παραδείγματα για να επεξηγηθεί περισσότερο η λειτουργία της μακροεντολής C++ __FILE__. Συνοψίζοντας, ελπίζουμε ότι αυτό το άρθρο θα σας βοηθήσει με τη μακροεντολή C++ __FILE__στο καλύτερό της.