"#define" tunnus ["("tunnuslista ")"]{symboli} - makron määrittely "#undef" tunnus - määrittelyn poisto "#include" "<" tiedostonnimi ">" | tiedostomäärite - tiedoston lisääminen "#if" vakiolauseke - käännetään jos != 0 "#elif" vakiolauseke - ELSE IF osa edelliseen "#else" - ehd. käänt. ELSE- osa "#error" virheviesti - lopettaa käännöksen "#endif" - lopettaa ehd. käänt. "#ifdef" tunnus - kään. jos tunnus olem. "#if defined tunnus - synonyymi ed. "#ifndef" tunnus - kään jos ei ole olem. "#line" kokonaislukuliteraali [tiedostomäärite ] - vaihd. rivinro ja tied. tiedostomäärite - > """tiedostonnimi"""
Valmiita makroja:
__DATE__ - käännöspäivä muodossa Mmm dd yyyy __FILE__ - käännettävän tiedoston nimi __LINE__ - rivinumero käännettävässä tiedostossa __STDC__ - 1 jos kääntäjä tekee standardikoodiaEsimerkiksi:
#line 29 "error.c" #if __STDC__ != 1 # error Nyt tuli virhe, ei standardikääntäjä #endif #include <stdio.h> #define LINTU "Käki" int main(void) { printf("Ohjelma %s, rivi %d päivä %s\n",__FILE__,__LINE__,__DATE__); printf(LINTU" kaukana kukkuu\n"); return 0; }Jos kääntäjä on standardimoodissa, tulostuu:
Ohjelma ERROR.C, rivi 37 päivä Dec 17 1992 Käki kaukana kukkuumuuten käännös päättyy virheilmoitukseen:
Nyt tuli virhe, ei standardikääntäjä