一个简单的消除调试打印方法

来源:互联网 发布:淘宝熏香炉 编辑:程序博客网 时间:2024/06/12 01:13

我的工程都是在终端上运行,用C语言实现,调试时有很多打印信息,一开始也没有注意,现在准备把软件正式发布的时候,才发现这么printf屏蔽掉也是件麻烦的事情,或者用#ifdef DEBUG这个太烦,或者你查找printf并替换成//printf。这样的有点不安全,比如如果是printf与}此类括号写在一起的就会出错,当然一般是不会这么写的。

我所做的是首先写一个my_printf(...)的函数,具体实现如下:

#include <stdarg.h>

#define DEBUG 0

inline 
static void my_printf(char* format,...)
 
{
#ifdef DEBUG
         va_list ap;
         va_start(ap, format);
         vprintf(format, ap);
         va_end(ap);
#endif
 }

你只要把上面这个函数的定义放在某个头文件里,然后让所有调用printf的源文件都包含这个头文件就可以了。

然后把工程里面所有包含printf的函数都替换成my_printf(注意你的工程中是否有其他还有printf字符串的变量或函数,我这里只屏蔽掉了fprintf),用shell 实现:

sed -i "s/printf/my_printf/g" `grep [^f]printf -rl .'

好了,如果你不想有打印信息,只要把#define DEBUG 0 注释掉就可以了,不会增加任何目标代码。

原创粉丝点击