[elektro] A szokásos C kezdő agymenés
Palasik Sandor
palasik at mail.datanet.hu
Thu Nov 22 16:16:59 CET 2012
> #define DRV_SPI_STATbits(i) SPI##i##STATbits
Ez igazából nem is C, hanem az előfeldolgozó. A dupla # azt jelenti, hogy
ott össze kell ragasztani a szövegeket egybe és azt kapja meg az igazi C
fordító. Tehát mondjuk a DRV_SPI_STATbits(5) hívásból a C fordító már csak
annyit lát, hogy SPI5STATbits.
Ennek megfelelően persze, ha te kapásból azt írod, hogy SPI5STATbits, az
ugyanúgy működik.
Emiatt a primitív működés miatt vigyázni is kell vele, mert ha azt írod,
hogy DRV_SPI_STATbits(1+4), akkor abból az lesz, hogy SPI1+4STATbits, amire
hibát jelez a C fordító utána.
A szimpla # meg azt jelenti, hogy abból szöveget kell csinálni. Egyik
kedvenc makróm:
#define pvd(x) printf(#x "=%d\n",(x))
Ha hibakeresés közben kell valami változó értéke és valamiért nem akarom
vagy tudom debuggerben nézegetni, akkor ennyit írok:
pvd(ize);
Az eredményben meg mondjuk ez jelenik meg:
ize=42
A fordító meg ezt kapja az előfeldolgozótól:
printf("ize" "=%d\n",(ize));
A két egymás melletti szöveget simán összemásolja egybe, úgyhogy ennek
ugyanaz lesz az eredménye, mint ennek:
printf("ize=%d\n",ize);
Palasik Sándor
More information about the Elektro
mailing list