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