Δημοσιεύτηκε: 26 Ιουν 2011, 16:28
Το #define δεν όριζει απλώς μια σταθερά. Οτιδήποτε έρχεται με # είναι preprocessor directive. Δηλαδή ο κώδικας με # περνάει πρώτα από τον προμεταγλωττιστή που είναι ένα υποσύνολο της C και ουσιαστικά τροποποιεί τον πηγαίο κώδικα. Δηλαδή το #define PI 3.14 κάνει το εξης: διαβαζει τον κώδικα και αντικαθιστά όπου PI το 3.14. Μετά από αυτή την τροποποίηση, αρχίζει η μεταγλώττιση. Γι'αυτό φαίνεται το PI σαν σταθερά. Γι'αυτό και δε δεσμέυεις μνήμη. Γιατί στην πραγματικότητα η "μεταβλήτη" PI δεν υπάρχει κατά το run time. Μπορείς με την επιλογή -E του compiler να δεις το αποτέλεσμα του preprocessor.