Ha van egy programunk, aminek a futását követni akarjuk időnként, de nem mindig, akkor használhatunk a programban például ilyen utasításokat:
#ifdef runDebug
Serial.println("s="+s+" x="+String(x));
#endif
A program elején:
#define runDebug
.
.
.
String s = "proba" ;
int x= 25 ;
.
.
.
#ifdef runDebug
Serial.println("s="+s+" x="+String(x));
#endif
Ezműködik, és ezt írja ki:
s=proba x=25
Csak az a baj vele, hogy ha telerakjuk a programunkat ilyen #ifdef-es sorokkal, nagyon áttekinthetetlen lesz.
#define runDebug
.
.
.
#ifdef runDebug
# define printIFrunDebug(p) (Serial.println(p))
# else
# define printIFrunDebug(p)
# endif
Ezek után a programba a megfelelő helyre elég csupán ezt írni:
printIFrunDebug("s="+s+" x="+String(x));
Ez is működik, és ugyanezt írja ki:
s=proba x=25
Ez sokkal áttekinthetőbbé teszi a programunkat!
Ha a
#define runDebug
helyett a
//#define runDebug
sort írjuk, akkor fordítás során semmi nem kerül a printIFrunDebug helyére.