Σε αυτό το σεμινάριο, θα εισαχθείτε στους 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
Προτεινόμενες αναγνώσεις
- Έλεγχος γραμμής
- Πράγματα
- Έξοδος προεπεξεργαστή
- Άλλες οδηγίες