DEBUG_PRINT

来源:互联网 发布:c语言创建一张表的语句 编辑:程序博客网 时间:2024/05/19 00:41

在程序里为了调试的便利,我们经常要打印一些信息,如函数的返回值什么的,同时我们又不想在公布的法度中显示这些信息,于是我们如许实现:




#ifdef _DEBUG
   printf("This is a debug information.\n");
#endif




 


    然则,

在法度里为了调试的便利,我们经常要打印一些信息,如函数的返回值什么的,同时我们又不想在公布的法度中显示这些信息,于是我们如许实现:


 



 

#ifdef _DEBUG
   printf("This is a debug information.\n");
#endif


 



 

 


 

    然则,法度中须要打印的调试信息的处所可能很多,每次都如许写也挺麻烦,所以我们定义宏


 



 

#ifdef _DEBUG
   #define debug_print(s) printf(s)
#else
   #define debug_print(s)
#endif


 



 

 


 

    如许,若是编译的时辰定义了_DEBUG选项(DEBUG版),则将debug_print(s)调换成printf(s),法度在履行的时辰打印调试信息;不然就将debug_print(s)用空行调换掉,法度在履行的时辰也就没有什么显示了。

   如今题目又来了,如许的情势只能打印简单的信息,不克不及进行格局转换的,想下面的句子就不克不及正确履行了:
    debug_print("ret code = %d\n", ret);


 

   我们对本来的宏定义作简单的批改:


 



 

#ifdef _DEBUG
   #define debug_print(s) printf s
#else
   #define debug_print(s)
#endif


 



 

 


 

   而程序中我们如许应用:
   debug_print(("ret code = %d\n", ret));   // 重视,是两个括号!


 

如许,在预编译的时辰,s被"ret code = %d\n", ret调换



 




我在自己的一生里也曾经历过被遗弃和背叛的痛苦。可是有一种东西却救了我:我的生活永远是有目的、有意义的,这就是为社会主义而奋斗。——奥斯特洛夫斯基
中须要打印的调试信息的处所可能很多,每次都如许写也挺麻烦,所以我们定义宏




#ifdef _DEBUG
   #define debug_print(s) printf(s)
#else
   #define debug_print(s)
#endif




 


    如许,若是编译的时辰定义了_DEBUG选项(DEBUG版),则将debug_print(s)调换成printf(s),法度在履行的时辰打印调试信息;不然就将debug_print(s)用空行调换掉,法度在履行的时辰也就没有什么显示了。

   如今题目又来了,如许的情势只能打印简单的信息,不克不及进行格局转换的,想下面的句子就不克不及正确履行了:
    debug_print("ret code = %d\n", ret);


   我们对本来的宏定义作简单的批改:




#ifdef _DEBUG
   #define debug_print(s) printf s
#else
   #define debug_print(s)
#endif




 


   而在法度中我们如许应用:
   debug_print(("ret code = %d\n", ret));   // 重视,是两个括号!


如许,在预编译的时辰,s被"ret code = %d\n", ret调换