Δημοσιεύτηκε: 29 Μαρ 2012, 17:43
από migf1
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 );

Η διαφορά είναι προφανής :) Αν όχι, πες μου να το εξηγήσω κι άλλο.