您的位置:首页 > 其它

初学者适用的输出调试方法

2010-11-28 21:43 190 查看
这天看一个朋友写的程序,第一眼看去感觉非常乱,仔细一看发现其实还是有点玄机在里面,为什么会那么乱是因为他在里面加入了调试信息,全都是打印的log。其实那样写有不少好处,可以很方便的注释掉调试代码。

现在分享下它的那种方法

#define DEBUG

/* 其他代码 */

..........

..........

/* 调试代码 */

#ifdef DEBUG

printf(".........../n");

#endif

这样写有一个好处就是如果我不要调试的时候把#define DEBUG注释了就完了,同时也能很容易的加入其他非输出语句方式的调试代码。不过缺点也不少,我们需要每次写调试信息的时候都加入#ifdef.........#endif,这都还好,大不了多谢点代码麻,关键的问题在于代码看上去很乱,代码不易维护,如果会排版或许会好点。

然后分享下第二种,个人比较喜欢这种,能少些代码,也能让代码美观:

#define DEBUG

#define XX_DEBUG

/* 调试宏定义 */

#ifdef DEBUG

# ifdef XX_DEBUG

# define PRINTF(fmt, args...) printf(fmt, ##args)

# else

# define PRINTF(fmt, args...) fprintf(stderr, fmt, ##args)

# endif

#else

# define PRINTF(fmt, args...) /* 什么事情也不做 */

#endif

/* 调试代码 */

PRINTF("%d/n", X);

.........

.........

如果不需要调试信息的时候把#define DEBUG注释了就行了。

这种方式的调试就不会在代码中出现#ifdef..........#endif一类语句了,代码就不会太乱了,同时也达到了调试了效果,只是这种方法也有个很明显的缺点,我不能加入除PRINTF以外的调试代码,即使能还得又在前面定义一堆宏。

我知道的就这两种了,如果还有其他的好方法请大家分享。谢谢..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: