Macro to turn off printf statements

后端 未结 10 1606
粉色の甜心
粉色の甜心 2020-12-14 08:42

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.

10条回答
  •  粉色の甜心
    2020-12-14 08:42

    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.

提交回复
热议问题