Koska C- kielen makro on todellakin vain tekstinkorvaus, muuttaa esikääntäjä seuraavan tekstin
#include <stdio.h>
#define ALKU int main(void) {
#define LOPPU return 0; }
#define mk *100
#define km *1000
ALKU
double hinta_penneina,matka_m;
hinta_penneina = 5 mk;
matka_m = 3.5 km;
LOPPU
muotoon
... kaikki stdio.h:ssa oleva koodi makrot käsiteltynä ...
int main(void) {
double hinta_penneina,matka_m;
hinta_penneina = 5 *100;
matka_m = 3.5 *1000;
return 0; }
Tosin tällaisia makrotemppuiluja kannattaa välttää ellei siitä saa suunnatonta ohjelman ylläpidollista hyötyä. Tarvittaessa pelkkä esikäännös voidaan tehdä vaikka Borland C++:lla:
C:\OMAT\OHJELMOI\VESA>CPP makroja.c[RET] tulee tiedosto makroja.i