Δημοσιεύτηκε: 11 Ιούλ 2011, 19:28
από migf1
Qdata έγραψε:
Star_Light έγραψε:δεν μου το χτυπησε ο μεταγλωτιστης παντως το ερωτηματικο :/
Thanks για την επισημανση.


Όντως.Ούτε εμένα μου έβγαλε σφάλμα ο gcc με το ερωτηματικό.Δεν ξέρω γιατί.
Πάντως η κύρια σύνταξη είναι:
Κώδικας: Επιλογή όλων
#define ΣΤΑΘΕΡΆ ΤΙΜΉ

Βασικά τα macros απλά αντικαθιστούν το όνομά τους με τον κώδικα που τους βάζουμε στο #define τους. Το ; που δεν βάζουμε στο τέλος του κώδικά τους, το βάζουμε όταν καλούμε το όνομά τους.

Π.χ. αν έχουμε ένα macro που δίνει το ελάχιστο μεταξύ 2 αριθμών...
Κώδικας: Επιλογή όλων

#define MIN(x,y) (x) < (y) ? x : y

όταν το καλέσουμε, θα βάλουμε ; στο τέλος εμείς. Π.χ.
Κώδικας: Επιλογή όλων

int a=10, b=20, c;

c = MIN(a,b);

Αν όμως έχουμε ένα macro που είναι μια συνθήκη, π.χ. αν το όρισμά του είναι ψηφίο...
Κώδικας: Επιλογή όλων

#define ISDIGIT(c) ( (c) >= '0' && (c) <= '9' )

τότε όταν το καλέσουμε σε ένα if δεν θα του βάλουμε ; στο τέλος...
Κώδικας: Επιλογή όλων


int c = getchar();
if ( ISDIGIT(c) )
...