2014年10月3日 星期五

[轉] 控制調試信息的打印(printk,printf)

對於一個很大的工程來說,在產品測試階段是需要通過printk或printf打印語句來打印信息,以便於調試的,但是等到產品正式發佈的時候,就得需要去將這些打印消息的print語句關閉掉的,這是因為很多打印語句的執行也是需要花時間的,會影響程序運行的性能,所以需要關閉,
那麼,怎樣很自如的開關打印語句呢?
下面是一個例子(debug.h)
  1. #ifndef _DEBUG_H_  
  2. #define _DEBUG_H_  
  3.   
  4. //#define DEBUG_ON_OFF  
  5.   
  6. #if defined(DEBUG_ON_OFF)  
  7.     #define DEBUG(fmt,arg...) printf(fmt,##arg)  
  8. #else  
  9.     #define DEBUG(...)  
  10. #endif  
  11. #endif  

  1. #include <stdio.h>  
  2. #include "debug.h"  
  3.   
  4.   
  5.   
  6. int main(void)  
  7. {  
  8.     int a = 10;  
  9.     DEBUG("Hello %d\n",a);  
  10.   
  11.     return 0;  
  12. }