Helium3 Helium3 - 19 days ago 10
C Question

Macro to turn off printf statements

What MACRO can be used to switch off printf statements, rather than removing them all for deployment builds, I just want to switch them off, skip them, ignore them.

EDIT: I personally use gcc, but code is part of a larger project which will be compiled on a Panda board running Ubuntu.

Answer

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\n", 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.