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