Σε αυτό το σεμινάριο, θα εισαχθείτε στους c προεπεξεργαστές και θα μάθετε να χρησιμοποιείτε τη συλλογή #include, #define και υπό όρους με τη βοήθεια παραδειγμάτων.

Ο προεπεξεργαστής C είναι ένας μακροεπεξεργαστής μακροεντολών (σας επιτρέπει να ορίσετε μακροεντολές) που μετασχηματίζει το πρόγραμμά σας πριν από τη σύνταξη. Αυτοί οι μετασχηματισμοί μπορούν να είναι η συμπερίληψη του αρχείου κεφαλίδας, των επεκτάσεων μακροεντολών κ.λπ.
Όλες οι οδηγίες προεπεξεργασίας ξεκινούν με ένα #σύμβολο. Για παράδειγμα,
#define PI 3.14
Μερικές από τις κοινές χρήσεις του προεπεξεργαστή C είναι:
Συμπεριλαμβανομένων αρχείων κεφαλίδας: #include
Ο #includeπροεπεξεργαστής χρησιμοποιείται για να περιλαμβάνει αρχεία κεφαλίδας σε προγράμματα C. Για παράδειγμα,
#include
Εδώ, stdio.hείναι ένα αρχείο κεφαλίδας. Η #includeοδηγία προεπεξεργαστή αντικαθιστά την παραπάνω γραμμή με τα περιεχόμενα του stdio.hαρχείου κεφαλίδας.
Αυτός είναι ο λόγος για τον οποίο πρέπει να χρησιμοποιήσετε #include για να μπορέσετε να χρησιμοποιήσετε λειτουργίες όπως scanf()και printf().
Μπορείτε επίσης να δημιουργήσετε το δικό σας αρχείο κεφαλίδας που περιέχει δήλωση λειτουργίας και να το συμπεριλάβετε στο πρόγραμμά σας χρησιμοποιώντας αυτήν την οδηγία προεπεξεργαστή.
#include "my_header.h"
Επισκεφτείτε αυτήν τη σελίδα για να μάθετε περισσότερα σχετικά με τη χρήση αρχείων κεφαλίδας.
Μακροεντολές χρησιμοποιώντας #define
Μια μακροεντολή είναι ένα κομμάτι κώδικα που έχει ένα όνομα. Μπορείτε να ορίσετε μια μακροεντολή σε C χρησιμοποιώντας την #defineοδηγία προεπεξεργαστή.
Εδώ είναι ένα παράδειγμα.
#define c 299792458 // speed of light
Εδώ, όταν χρησιμοποιούμε το c στο πρόγραμμά μας, αντικαθίσταται με 299792458.
Παράδειγμα 1: # καθορισμός προεπεξεργαστή
#include #define PI 3.1415 int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); // Notice, the use of PI area = PI*radius*radius; printf("Area=%.2f",area); return 0; )
Λειτουργεί όπως οι μακροεντολές
Μπορείτε επίσης να ορίσετε μακροεντολές που λειτουργούν με παρόμοιο τρόπο όπως μια κλήση συνάρτησης. Αυτό είναι γνωστό ως μακροεντολές τύπου λειτουργίας. Για παράδειγμα,
#define circleArea(r) (3.1415*(r)*(r))
Κάθε φορά που συναντά το πρόγραμμα circleArea(argument), αντικαθίσταται από το (3.1415*(argument)*(argument)).
Ας υποθέσουμε, περάσαμε το 5 ως επιχείρημα, επεκτείνεται όπως παρακάτω:
circleArea(5) expands to (3.1415*5*5)
Παράδειγμα 2: Χρήση του #define προεπεξεργαστή
#include #define PI 3.1415 #define circleArea(r) (PI*r*r) int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); area = circleArea(radius); printf("Area = %.2f", area); return 0; )
Επισκεφθείτε αυτήν τη σελίδα για να μάθετε περισσότερα σχετικά με τις μακροεντολές και τον # καθορισμό προεπεξεργαστή.
Συγγραφή υπό όρους
Στον προγραμματισμό C, μπορείτε να καθοδηγήσετε τον προεπεξεργαστή εάν θα περιλαμβάνει ένα μπλοκ κώδικα ή όχι. Για να γίνει αυτό, μπορούν να χρησιμοποιηθούν υπό όρους οδηγίες.
Είναι παρόμοιο με μια ifδήλωση με μια σημαντική διαφορά.
Η ifδήλωση ελέγχεται κατά τη διάρκεια του χρόνου εκτέλεσης για να ελέγξει εάν ένα μπλοκ κώδικα πρέπει να εκτελεστεί ή όχι, ενώ οι προϋποθέσεις χρησιμοποιούνται για να συμπεριλάβουν (ή να παραλείψουν) ένα μπλοκ κώδικα στο πρόγραμμά σας πριν από την εκτέλεση.
Χρήσεις υπό όρους
- Χρησιμοποιήστε διαφορετικό κωδικό ανάλογα με το μηχάνημα, το λειτουργικό σύστημα
- μεταγλωττίστε το ίδιο αρχείο προέλευσης σε δύο διαφορετικά προγράμματα
- να εξαιρέσει ορισμένο κώδικα από το πρόγραμμα αλλά να τον κρατήσει ως αναφορά για μελλοντικό σκοπό
Πώς να χρησιμοποιήσετε υπό όρους;
Για να χρησιμοποιήσετε την προϋπόθεση, #ifdef, #if, #defined, #elseκαι #elseifοι οδηγίες χρησιμοποιούνται.
#ifdef Οδηγία
#ifdef MACRO // conditional codes #endif
Εδώ, οι κωδικοί υπό όρους περιλαμβάνονται στο πρόγραμμα μόνο εάν ορίζεται το MACRO.
#if, #elif και #else Οδηγία
#if expression // conditional codes #endif
Εδώ, η έκφραση είναι μια έκφραση ακέραιου τύπου (μπορεί να είναι ακέραιοι, χαρακτήρες, αριθμητική έκφραση, μακροεντολές και ούτω καθεξής).
Οι κωδικοί υπό όρους περιλαμβάνονται στο πρόγραμμα μόνο εάν η έκφραση αξιολογείται σε μη μηδενική τιμή.
Η προαιρετική #elseοδηγία μπορεί να χρησιμοποιηθεί με #ifοδηγία.
#if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif
Μπορείτε επίσης να προσθέσετε ένθετο υπό όρους στη #if… #elseχρήση σας#elif
#if expression // conditional codes if expression is non-zero #elif expression1 // conditional codes if expression is non-zero #elif expression2 // conditional codes if expression is non-zero #else // conditional if all expressions are 0 #endif
#ορίζεται
Ο ειδικός τελεστής #defined χρησιμοποιείται για να ελέγξει εάν μια συγκεκριμένη μακροεντολή έχει οριστεί ή όχι. Χρησιμοποιείται συχνά με οδηγία #if.
#if defined BUFFER_SIZE && BUFFER_SIZE>= 2048 // codes
Προκαθορισμένες μακροεντολές
Ακολουθούν ορισμένες προκαθορισμένες μακροεντολές στον προγραμματισμό Γ.
| Μακροεντολή | αξία |
|---|---|
__DATE__ | Μια συμβολοσειρά που περιέχει την τρέχουσα ημερομηνία |
__FILE__ | Μια συμβολοσειρά που περιέχει το όνομα του αρχείου |
__LINE__ | Ένας ακέραιος αριθμός που αντιπροσωπεύει τον τρέχοντα αριθμό γραμμής |
__STDC__ | Εάν ακολουθεί το πρότυπο C ANSI, τότε η τιμή είναι μη μηδενικός ακέραιος |
__TIME__ | Μια συμβολοσειρά που περιέχει την τρέχουσα ημερομηνία. |
Παράδειγμα 3: Λάβετε την τρέχουσα ώρα χρησιμοποιώντας __TIME__
Το ακόλουθο πρόγραμμα εξάγει την τρέχουσα ώρα χρησιμοποιώντας __TIME__μακροεντολή.
#include int main() ( printf("Current time: %s",__TIME__); )
Παραγωγή
Τρέχουσα ώρα: 19:54:39
Προτεινόμενες αναγνώσεις
- Έλεγχος γραμμής
- Πράγματα
- Έξοδος προεπεξεργαστή
- Άλλες οδηγίες








