PRETPROCESORSKI IZRAZI
Naredba define se koristi da učini program
čitljivijim i dozvoljava korištenje makroa. Pogledajte slijedeće primjere,
#define TRUE 1 /* Na koristi se točka-zarez, # mora biti prvi karakter u liniji */ #define FALSE 0 #define NULL 0 #define AND & #define OR | #define EQUALS == game_over = TRUE; while( list_pointer != NULL ) ................
Makroi su dio koda koji su zamijenjeni za vrijeme prevođenja.Definicija makroa koji pri pozivu prihvaća argument,
#define SQUARE(x) (x)*(x) y = SQUARE(v);U ovom slučaju, v je izjednačen sa x u makro definiiciji 'square', pa je varijabli y pridružen kvadrat od v. Zagrade u definiciji makroa 'square' su nužne za točnu procjenu. Makro postaje
y = (v) * (v);
Naravno, definicije makroa također mogu sadržavati i druge definicije makroa,
#define IS_LOWERCASE(x) (( (x)>='a') && ( (x) <='z') ) #define TO_UPPERCASE(x) (IS_LOWERCASE (x)?(x)-'a'+'A':(x)) while(*string) { *string = TO_UPPERCASE(*string); ++string; }