previous next Up Title Contents Index

15.3 Ehdollinen kääntäminen

Edellisessä pääohjelmassa testattava osa voidaan valita muuttamalla #if - lauseissa esiintyviä 0 ja 1:iä.

Kyseessä on esiprosessorin direktiivi, jolla määrätään minkä osan esiprosessori antaa varsinaiselle kääntäjälle käsiteltäväksi.

Tällä periaatteella voidaan rakentaa ohjelmia, joissa tekstit tulevat eri kielillä (englanti, ruotsi, suomi) sen mukaan, mitä ohjelmassa on määritelty.

Samalla tempulla teimme myös lue_merkki - aliohjelman toimimaan joko Turbo- C:ssä tai standardi ANSI- C:ssä sen mukaan onko määritelty sana __TURBO__ (huomaa kaksi _ kummallakin puolella!):

	#ifdef __TURBOC__
	#  define GETCH
	#  include <conio.h>
	#endif
	...
	char lue_merkki(void)
	{
	#ifdef GETCH
	  ... /* lukeminen conio- kirjaston avulla */
	#else
	  ... /* lukeminen standardikirjaston avulla */
	#endif
	}
Usein kääntäjään liittyy kääntäjän määrittelemiä symboleja, joiden olemassaoloa testaamalla voidaan tehdä laiteriippuvia osia. Juuri tällainen oli __TURBOC__. Ehtona voi olla myös jokin oma sana kuten edellä GETCH. Usein itse määriteltyjä sanoja käytetään estämään .h- tiedoston moninkertaiset esiintymät:

ali\mjonot.h - estetään monikertainen käyttö

	... 
	#ifndef MJONOT_H
	#define MJONOT_H
	... /* varsinainen h- tiedoston sisältö */
	#endif
Nyt voidaan pääohjelmassa kirjoittaa
	#include "mjonot.h" /* Lukee mjonot.h - tiedoston kokonaan */
	#include "mjonot.h" /* Ei tee mitään koska MJONOT_H määr. */


previous next Up Title Contents Index