Not exactly what you ask for, but I use this construct in my code for debug output when I do not have a proper logging system handy:
#if 1
#define SPAM(a) printf a
#else
#define SPAM(a) (void)0
#endif
So I can do this all over my code
SPAM(("foo: %d
", 42));
and then disable all of them by changing 1
to 0
in #if
above.
But if you have variadic macro support in all compilers that you write code for, then you may go for other answers and just redefine printf
. (That being said, I find it useful to distinct debugging prints from regular ones in code — using a different function name helps readability.)
Note that you also can redirect stdout
to the /dev/null
, but I assume that you want to get rid from runtime overhead as well.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…