makros sind ersetzungsfunktionen. zuerst werden sie definiert, und dann verwendet. z.b.
#define SQUARE(x) ((x)^2)
int y=12;
/*später */
printf ("das quadrat von %d ist %d\n", x, SQUARE(y));
das ist wirklich nur eine textersetzung, d.h. der code ist äquivalent zu
int y=12;
printf ("das quadrat von %d ist %d\n", x, ((y)^2));
beachte die klammern! da es nur eine textersetzung ist, kann folgendes passieren:
#define FN(x,y) x^y
FN(1+1, 1+1);
wird zu
, was falsch ist!
das äquivalent dazu in perl sind sog. Source Filter. <!--cpan1--><a href="
http://search.cpan.org/search?query=%22Filter::Sim..." target="_blank">CPAN: <!--cpan2--><!--cpan3--></a><!--cpan4-->Filter::Simple
makroprozessoren gibts übrigens einige, bekannter ist z.b.
M4, der z.b. für die sendmail-config benutzt wird.
der von C benutzte heisst C PreProcessor, oder
CPP (von richard stallman)
es gibt noch andere, "bessere" makros, die erklärt dir aber besser jemand anders :g:
HTH
-- stefan