Δημοσιεύτηκε: 29 Μαρ 2012, 17:43
Ilias95 έγραψε:Απορία.
Γιατί;
...
Και όχι:
...
Αυτό είναι συνηθισμένο λάθος που κάνουν όσοι ξεκινούν με C. Ο λόγος είναι ότι πρόκειται για macro, και όχι για συνάρτηση. Τα macros είναι μια απλή αντικατάσταση (search & replace) των γραμμών του σώματός τους σε όσες γραμμές εμφανίζεται ο ορισμός τους στον υπόλοιπο κώδικα (αυτό το κάνει ο preprocessor πριν καν ξεκινήσει το compilation).
Αν λοιπόν το είχα όπως δείχνεις στην 2η περίπτωση, τότε αυτό εδώ...
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
for (i=0; i < uplim; i++)
NBS( printf("%hd", i) );
θα γινόταν πριν καν ξεκινήσει το compilation, έτσι...
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
for (i=0; i < uplim; i++)
int nTImeSTMp = (ntimes);
while (nTImeSTMp--)
putchar('\b');\
ενώ έτσι όπως το έχω, γίνεται έτσι...
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
for (i=0; i < uplim; i++)
do {
int nTImeSTMp = (ntimes);
while (nTImeSTMp--)
putchar('\b');
} while( 0 );
Η διαφορά είναι προφανής