C语言使用#define定义在debug环境下才打印的printf
#ifdef _WIN_DEBUG_
#define DEBUG_PRINTF(format,...) printf("File: "__FILE__", Line: %05d: "format"\n", __LINE__, ##__VA_ARGS__)
#else
#define DEBUG_PRINTF(format,...)
#endif
上面这个代码的问题是只支持C99以上编译, 如果遇到了C89, 还不支持可变参数宏定义.
这个链接比较完整地进行了讨论. https://newbedev.com/define-macro-for-debug-printing-in-c
C89下可以这样定义
#ifdef _WIN_DEBUG_
#define DEBUG_PRINTF(msg) printf msg
#else
#define DEBUG_PRINTF(msg)
#endif
int main(){
DEBUG_PRINTF(("%s, %d\n", "abc", 123)); // 作者说使用的时候一定要用双括号.
}