实在是没搞懂 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

posted on 2011-04-10 13:59  zxl2431  阅读(1463)  评论(2编辑  收藏  举报

导航