Κοινή χρήση τεχνολογίας

Προεπεξεργασία «Γλώσσα Γ».

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Προκαθορισμένα σύμβολα

Η γλώσσα C ορίζει ορισμένα προκαθορισμένα σύμβολα που μπορούν να χρησιμοποιηθούν απευθείας και να υποβληθούν σε επεξεργασία κατά την προεπεξεργασία.

__FILE__//进行编译的源文件
__LINE__//文件当前的行号
__DATE__//文件被编译的日期
__TIME__//文件被编译的时间
__STDC__//如果编译器遵循ANSI C,其值为1,否则未定义
  • 1
  • 2
  • 3
  • 4
  • 5

Αποτελέσματα δοκιμής:
Εισαγάγετε την περιγραφή της εικόνας εδώ

2. Το #define ορίζει σταθερές

Το #define χρησιμοποιείται για να γράψει τον ορισμό όταν ορίζει μια σταθερά:

#define MAX 100
  • 1

Ο λογικός κανόνας είναι να αντικαταστήσετε απευθείας το MAX με 100 όταν εμφανίζεται στον παρακάτω κώδικα.

σκηνές που θα χρησιμοποιηθούν:
Εισαγάγετε την περιγραφή της εικόνας εδώ

3. Το #define ορίζει μακροεντολές

Το #define χρησιμοποιείται για τον ορισμό των μακροεντολών με τον ίδιο τρόπο όπως οι συναρτήσεις, αλλά η λογική αντικαθίσταται κατά την αντικατάσταση, οι μεταβλητές πρέπει να περικλείονται σε παρενθέσεις για να αποφευχθούν ζητήματα προτεραιότητας τελεστή που ενδέχεται να μην οδηγήσουν στα αποτελέσματα που αναμένουμε.
Τρόπος χρήσης:

#define MAX(x,y) ((x) > (y) ? (x) : (y))
  • 1

Αυτή είναι μια μακροεντολή που γράφτηκε για να ολοκληρωθεί η κρίση της άμεσα μεγαλύτερης τιμής δύο αριθμών. Σημειώστε ότι οι αγκύλες μετά το όνομα της μακροεντολής πρέπει να είναι κοντά στη μακροεντολή.

Περίπτωση χρήσης:
Εισαγάγετε την περιγραφή της εικόνας εδώ
Εισαγάγετε την περιγραφή της εικόνας εδώ

Μέσα από τις δύο παραπάνω περιπτώσεις, μπορούμε να διαπιστώσουμε ότι οι μακροεντολές δεν περιορίζουν τον τύπο κατά τη μετάδοση παραμέτρων.

4. Σύγκριση λειτουργιών ενημέρωσης μακροεντολών

Πλεονεκτήματα των μακροεντολών:

  • 1. Όταν ολοκληρώνετε υπολογισμούς με μικρό αριθμό κωδικού, ο χρόνος εργασίας των μακροεντολών είναι μικρότερος από αυτόν των συναρτήσεων.
  • 2. Το πιο σημαντικό είναι ότι οι παράμετροι της συνάρτησης πρέπει να δηλώνονται με συγκεκριμένους τύπους. Οι μακροεντολές μπορούν να εφαρμοστούν σε διάφορους τύπους που μπορούν να συγκριθούν χρησιμοποιώντας >. Ο τύπος της μακροεντολής είναι άσχετος.

Μειονεκτήματα των μακροεντολών:

    1. Κάθε φορά που χρησιμοποιείται μια μακροεντολή, ένα αντίγραφο του κώδικα ορισμού της μακροεντολής θα εισάγεται στο πρόγραμμα. Εκτός εάν η μακροεντολή είναι σχετικά σύντομη, αυτό μπορεί να αυξήσει σημαντικά τη διάρκεια του προγράμματος.
    1. Δεν είναι δυνατή η αποσφαλμάτωση των μακροεντολών.
    1. Δεδομένου ότι οι μακροεντολές είναι ανεξάρτητες από τον τύπο, δεν είναι αρκετά αυστηρές.
    1. Οι μακροεντολές ενδέχεται να προκαλέσουν προβλήματα προτεραιότητας χειριστή, καθιστώντας τα προγράμματα επιρρεπή σε σφάλματα.

Συγκριτικός πίνακας μακροεντολών και συναρτήσεων:

Γνωρίσματα#define καθορισμένες μακροεντολέςλειτουργία
μήκος κωδικού Η μακροεντολή εισάγεται στο πρόγραμμα κάθε φορά που χρησιμοποιείται.Εκτός από πολύ μικρές μακροεντολές, η διάρκεια του προγράμματος θα αυξηθεί σημαντικάΟ κωδικός συνάρτησης εμφανίζεται μόνο σε ένα μέρος κάθε φορά που χρησιμοποιείται, καλείται ο ίδιος κωδικός σε αυτό το μέρος
Ταχύτητα εκτέλεσηςγρηγορότεραΥπάρχει η πρόσθετη επιβάρυνση των κλήσεων και επιστροφών συναρτήσεων, η οποία είναι πιο αργή.
προτεραιότητα χειριστήΟι παράμετροι μακροεντολών αξιολογούνται στο πλαίσιο όλων των παραστάσεων που περιβάλλουν, εκτός εάν περιλαμβάνονται παρενθέσεις, η προτεραιότητα των παρακείμενων τελεστών μπορεί να έχει απρόβλεπτες συνέπειες, επομένως συνιστάται οι μακροεντολές να γράφονται με περισσότερες παρενθέσεις. Οι παράμετροι συνάρτησης αξιολογούνται και μεταβιβάζονται στη συνάρτηση μόνο όταν καλείται η συνάρτηση. Οι εκφράσεις αξιολογούνται προβλέψιμα.
Παράμετροι με παρενέργειεςΟι παράμετροι μπορούν να αντικατασταθούν σε πολλαπλές θέσεις εντός του σώματος της μακροεντολής και εάν οι παράμετροι μιας μακροεντολής αξιολογηθούν πολλές φορές, η αξιολόγηση παραμέτρων με παρενέργειες μπορεί να παράγει απρόβλεπτα αποτελέσματα.Οι παράμετροι συνάρτησης αξιολογούνται μόνο κατά τη μετάδοση παραμέτρων και είναι εύκολο να ελεγχθούν.
Τύπος παραμέτρουΟι παράμετροι της μακροεντολής δεν έχουν καμία σχέση με τον τύπο Εφόσον η λειτουργία στις παραμέτρους είναι νόμιμη, μπορεί να χρησιμοποιηθεί για οποιονδήποτε τύπο παραμέτρου.Οι παράμετροι της συνάρτησης σχετίζονται με τον τύπο Εάν είναι διαφορετικές, χρειάζονται διαφορετικές λειτουργίες και διαφορετικές οι εργασίες.
εντοπισμός σφαλμάτωνΟι μακροεντολές δεν είναι βολικές για τον εντοπισμό σφαλμάτωνΟι συναρτήσεις μπορούν να διορθωθούν από δήλωση προς δήλωση
αναδρομήΟι μακροεντολές δεν μπορούν να είναι αναδρομικέςΟι μακροεντολές δεν μπορούν να είναι αναδρομικές

5. # και ##

1. #χειριστής

Ο #τελεστής μετατρέπει ένα όρισμα μιας μακροεντολής σε κυριολεκτική συμβολοσειρά. Επιτρέπεται να εμφανίζεται μόνο στη λίστα αντικατάστασης μιας μακροεντολής με παραμέτρους.
Η λειτουργία που εκτελείται από τον τελεστή # μπορεί να γίνει κατανοητή ως "stringification".

Παράδειγμα χρήσης:
Εισαγάγετε την περιγραφή της εικόνας εδώ

2. ## χειριστής

Το ## μπορεί να συνδυάσει τα σύμβολα και στις δύο πλευρές του σε ένα σύμβολο, το οποίο επιτρέπει στους ορισμούς μακροεντολών να δημιουργούν αναγνωριστικά από ξεχωριστά τμήματα κειμένου.κόλλα για μαρκαδόρους
Μια τέτοια σύνδεση πρέπει να παράγει ένα έγκυρο αναγνωριστικό. Διαφορετικά το αποτέλεσμα είναι απροσδιόριστο. Ας το σκεφτούμε εδώ Όταν γράφουμε μια συνάρτηση για να βρούμε τη μεγαλύτερη τιμή δύο αριθμών, πρέπει να γράφονται διαφορετικές συναρτήσεις για διαφορετικούς τύπους δεδομένων.

Παράδειγμα χρήσης:
Εισαγάγετε την περιγραφή της εικόνας εδώ