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

      这天看一个朋友写的程序,第一眼看去感觉非常乱,仔细一看发现其实还是有点玄机在里面,为什么会那么乱是因为他在里面加入了调试信息,全都是打印的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以外的调试代码,即使能还得又在前面定义一堆宏。

      我知道的就这两种了,如果还有其他的好方法请大家分享。谢谢..

猜你喜欢

转载自blog.csdn.net/zhou_2008/article/details/6041516
今日推荐