实在是没搞懂 debug宏

  在缺氧的博客中看到 debug宏,方便调试程序,但我没看懂...

  debug.h 文件              

  
    
#ifndef DEBUG_H_
#define DEBUG_H_

int myprintf( char * format,...);

#define ENABLE_STDOUT_DEBUG // trun on all of debug message using

#ifdef ENABLE_STDOUT_DEBUG
#define DEBUG(x) {myprintf x;}
#else
#define DEBUG(x)
#endif

#endif /* DEBUG_H_ */

  debug.c 文件

  
    
1 #include < stdarg.h >
2 #include < stdio.h >
3 #include " ../src/debug/debug.h "
4
5 #ifdef ENABLE_UART_DEBUG
6 // 省略
7
8 #else
9 void debug_output( char * pMessage){
10 printf(pMessage);
11 }
12 #endif
13
14 int myprintf( char * format,...){
15 int rc;
16 char szText[ 512 ];
17
18 va_list paramList;
19 va_start(paramList, format);
20 rc = vsnprintf(szText, 512 ,format,paramList);
21 va_end(paramList);
22
23 debug_output(szText);
24
25 return rc;
26 }

  main.c   文件

  
    
1 #include < stdio.h >
2 #include < unistd.h >
3 #include " ../src/debug/debug.h "
4 #include " ../src/my_sopc/my_regs.h "
5
6 // 配置调试开关
7 #define ENABLE_APP_DEBUG // turn on debug message
8 #ifdef ENABLE_APP_DEBUG
9 #define APP_DEBUG(x) DEBUG(x)
10 #else
11 #define APP_DEBUG(x)
12 #endif
13
14 // 主函数
15 int main( void )
16 {
17 bool i;
18 i = FALSE;
19 APP_DEBUG(( " i=%d " ,i));
20 printf( " \n i=%d " ,i);
21
22 return 0 ;
23 }

  输出结果:

  

  通过APP_DEBUG(("i=%d",i)); 和 printf("\n i=%d",i);的输出结果是一样的,那我就没明白为什么还要费力气去写个 debug 宏,哎。。。头大啊。

  根据代码来看 APP_DEBUG(("i=%d",i)) == DEBUG(("i=%d",i))  == myprintf ("i=%d",i) 后来的 debug.c 里面的就看不明白鸟。。。反正我暂时就理解为 printf

你可能感兴趣的:(debug)