Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

24.3 Esikääntäjän direktiivit

Seuraava tulkitaan siten, että "- merkeissä oleva osa kirjoitetaan sellaisenaan. [] merkitsevät ehdollisuutta, {} 0- n kerran esiintymää ja | vaihtoehtoa, niitä ei siis kirjoiteta.

	"#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 standardikoodia  

Esimerkiksi:

preceden\error.c - esimerkki virheeseen pakottamisesta

	#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 kukkuu

muuten käännös päättyy virheilmoitukseen:

	Nyt tuli virhe, ei standardikääntäjä


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys