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 suurinpiirtein seuraavasti:
#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;; */