Thread Typen in Perl (3 answers)
Opened by kabel at 2003-08-18 13:46

kabel
 2003-08-18 17:05
#60648 #60648
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
makros sind ersetzungsfunktionen. zuerst werden sie definiert, und dann verwendet. z.b.
Code: (dl )
1
2
3
4
#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
Code: (dl )
1
2
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:
Code: (dl )
1
2
#define FN(x,y) x^y
FN(1+1, 1+1);

wird zu
Code: (dl )
1+1^1+1
, 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

View full thread Typen in Perl