C makro kerdes

Palasik Sandor palasik at mail.datanet.hu
Thu Dec 8 12:51:53 CET 2005


Esetleg megnézhetnéd a generált kódot.

> #define HEX2CHAR(hx)  ( (10>hx) ?  (hx+48):(hx+55) )

Ugyan itt nem okoz problémát, mert a hívás helyén betettél egy extra
zárójelet, de én inkább a makródefinícióban tenném a paramétert zárójelbe.
Kevesebb meglepetés érhet...

Mondjuk így:
#define HEX2CHAR(hx)  (10>(hx)?(hx)+48:(hx)+55)

Sem több, sem kevesebb, mint amennyi kell.

Azt is vedd figyelembe, hogy ha bonyolult kifejezéseket írsz a makró
paramétereként, akkor azt annyiszor fogja kiszámolni. Itt konkrétan kétszer
teszi. Persze lehet, hogy a fordító optimalizálja, de akár pont az is
okozhat gondot. Egyszer egy fordító nekem kiköpött bizonyos feltételes
kifejezéseket, kénytelen voltam if-fel csinálni.

Palasik Sándor




More information about the Elektro mailing list