Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

7.4 Makro-direktiivi ja vakiot

#include oli tiedote esikääntäjälle siitä, että koodin sekaan täytyy lukea välillä jokin toinen teksti.

Makro-direktiivi #define on tiedote siitä, että tällä määreellä myöhemmin tekstissä esiintyvät sanat täytyy korvata toisella sanalla/sanoilla/merkeillä.

Yksinkertaisten makrojen käytön hyöty on siinä, että usein ohjelmassa esiintyvät sanat/vakionumerot voidaan koota helposti hallittavaksi ohjelman alkuun tai jopa omaan määrittelytiedostoonsa.

Siis #define- direktiivi on puhdas tekstinkäsittelyotus, joka toimii suurin piirtein seuraavasti:

c-alk\makrot.c - esimerkki mitä #define korvaa

	#define TERVE "Hello "

tarkoittaisi esikääntäjälle:

	vaihda kaikki TERVE- sanat merkkijonoiksi "Hello "
	
	eli seuraavat vaihdettaisiin:
	p=TERVE+1                /* =>  p="Hello "+1             */
	"Kissa"TERVE"istuu"      /* =>  "Kissa""Terve ""istuu"   */
	TERVE MIEHEEN            /* =>  "Hello" MIEHEEN          */
	
	muttei seuraavia
	TERVEYDEKSI                   /* Ei pelkkä TERVE-sana    */
	TERVE_MIEHEEN                 /* Ei pelkkä sana          */
	"OLEN OLLUT TERVE 2 PÄIVÄÄ"   /* Lainausmerkeissä        */
	Terve MIEHEEN                 /* Eri tavalla kirjoitettu */

Huomattakoon, ettei lainausmerkkien sisällä oleviin sanoihin kajota lainkaan!

Määriteltävä sana voidaan kirjoittaa isoja ja/tai pieniä kirjaimia käyttäen, mutta yleiseen C- tyyliin kuuluu kirjoittaa #define - määritellyt sanat isoilla kirjaimilla.

Vaihdettava sana loppuu ja korvaava jono alkaa ensimmäisestä ei- kirjaimesta tai numerosta, eli

	#define X=2;                /* VAARALLINEN!   X  => =2;  */	:-(
	int i=X;                    /* => int i==2;;             */


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys