I found this which appears a bit clearer, and simpler to understand. Sometimes too much choice/information can be too confusing.
Will this work for arduino?
// Debugging switches and macros
#define DEBUG 0 // Switch debug output on and off by 1 or 0
#if DEBUG
#define PRINTS(s) { Serial.print(F(s)); }
#define PRINT(s,v) { Serial.print(F(s)); Serial.print(v); }
#define PRINTX(s,v) { Serial.print(F(s)); Serial.print(F("0x")); Serial.print(v, HEX); }
#else
#define PRINTS(s)
#define PRINT(s,v)
#define PRINTX(s,v)
#endif