Οι σταθερές τιμές στη C – Εντολή #define

Οι σταθερές τιμές στη C – Εντολή #define

Οι Σταθερές τιμές στη C και ο Προεπεξεργαστής της

Οι σταθερές τιμές στη C και η δήλωσή τους, όπως ξέρουμε και από τις άλλες γλώσσες προγραμματισμού, έχουν μεγάλη σημασία σ’ ένα πρόγραμμα. Υπάρχουν δύο τρόποι για να δηλωθούν οι σταθερές τιμές στη C. Ένας τρόπος είναι να ορίσουμε μια μεταβλητή και να την εξισώσουμε με την επιθυμητή σταθερά, ως εξής :

float taxrate;
taxrate = 0.2;

Μ’ αυτόν τον τρόπο η αντικατάσταση της τιμής της μεταβλητής taxrate θα γίνεται όταν το πρόγραμμα τρέχει. Ο προεπεξεργαστής της C διαθέτει έναν καλύτερο τρόπο, όπου απλά προσθέτουμε μια γραμμή στην αρχή του αρχείου που περιέχει το πρόγραμμά μας, ως εξής:

#define TAXRATE 0.2

Όταν το πρόγραμμα μεταγλωττιστεί, η τιμή 0.2 θα αντικατασταθεί παντού όπου έχει χρησιμοποιηθεί η TAXRATE. Έτσι, όταν τρέξουμε το πρόγραμμα, όλες οι αντικαταστάσεις θα έχουν ήδη γίνει.

Πρέπει να προσέξουμε τη σύνταξη της #define, στην οποία δεν χρησιμοποιείται το ελληνικό ερωτηματικό (;), αφού δεν είναι μια πρόταση της C και ακόμη αποτελεί παράδοση στη C να γράφονται όλες οι σταθερές με κεφαλαία γράμματα για να τις αναγνωρίζουμε αμέσως και να τις ξεχωρίζουμε έτσι από τις άλλες μεταβλητές.

Ακολουθεί ένα παράδειγμα με χρήση της #define.

/* Χρήση της σταθεράς π = 3.14159 */
#include <stdio.h>
#define PI 3.14159
main(){
   float area, circum, radius;
   printf("Δώστε την ακτίνα του κύκλου : \n");
   scanf("%f", &radius);
   area = PI * radius * radius;
   circum = 2.0 * PI * radius;
   printf("Τα στοιχεία του κύκλου είναι :\n");
   printf("Περίμετρος = %1.2f, εμβαδόν = %1.2f\n", circum, area);
}

Το αποτέλεσμα θα είναι :

Δώστε την ακτίνα του κύκλου :

6.0

Τα στοιχεία του κύκλου είναι :

Περίμετρος = 37.70, εμβαδόν = 113.10

Η εντολή #define μπορεί να χρησιμοποιηθεί τόσο για χαρακτήρες όσο και για σταθερές συμβολοσειρές.

Χρησιμοποιούμε απλά εισαγωγικά για την πρώτη περίπτωση και διπλά για τη δεύτερη.

Ακολουθούν παραδείγματα:

#define BEEP '\007'
#define TEE 'T'
#define ESC '\033'
#define OOPS "Τώρα το πέτυχες"

Αν κατά λάθος γράψουμε #define TOES = 20, τότε η TOES θα αντικατασταθεί με το = 20 και όχι με το 20.

Οι Δυνατότητες της #define

Μπορούμε να μαζέψουμε όλες τις προτάσεις #define σ’ ένα αρχείο και να το ονομάσουμε, π.χ. const.h. Μετά, στην αρχή κάθε προγράμματος μπορούμε να εισάγουμε την πρόταση #include “const.h” και όταν τρέξει το πρόγραμμα, ο προεπεξεργαστής θα διαβάσει το αρχείο const.h και θα χρησιμοποιήσει όλες τις προτάσεις #define που θα βρει εκεί.

Χρησιμοποιούμε την ονομασία “const.h” για να ψάξει πρώτα στον τρέχοντα κατάλογο και μετά στους καταλόγους του συστήματος, ενώ η ονομασία <const.h> σημαίνει να ψάξει στον κανονικό κατάλογο πρώτα. Μια άλλη σπουδαία δυνατότητα της #define είναι ότι μπορούμε να κάνουμε τέτοιες αντικαταστάσεις, ώστε τα προγράμματα της C να θυμίζουν Pascal, ως εξής:

#define program main()
#define begin {
#define end }
#define times *

Έτσι, όπου ο προεπεξεργαστής βρει τους αριστερούς όρους, τους αντικαθιστά μ’ ό,τι είναι δεξιά, δηλ. με εντολές της C, αλλά εμείς γράφουμε σαν να είμαστε στην Pascal.

Απάντηση

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει τα ανεπιθύμητα σχόλια. Μάθετε πώς υφίστανται επεξεργασία τα δεδομένα των σχολίων σας.