背景
在C语言编写中,经常想因为调试的原因,插入一些临时输出的变量,或者执行一些不必要的指令。
写完之后频繁注释和反注释很耗时间,而且可能会造成不必要的错误。
因此作者采用了宏命令的方式,插入一些调试输出。
代码
// File: debug.c
// some debug Macro
// #define DEBUG
#ifndef DEBUG_PRINT
#ifdef DEBUG
#define DEBUG_PRINT(fmt, args...) fprintf(stderr, fmt, ## args)
#else
#define DEBUG_PRINT(fmt, args...) /* Don't do anything in release builds */
#endif
#endif //DEBUG_PRINT
#ifndef DEBUG_RUN
#ifdef DEBUG
#define DEBUG_RUN(args) {args ; }
#else
#define DEBUG_RUN(args...)
#endif
#endif //DEBUG_RUN
使用方式
将上述代码加入到头文件中。
Gcc编译时加入-DDEBUG定义DEBUG宏
gcc -DDEBUG -o ./a.out
对于DEBUG_PRINT,在代码中像正常printf一样使用。
对于DEBUG_RUN,在括号中的语句只有在DEBUG模式下才会执行。
//File: main.c
#include <stdio.h>
#include "debug.c"
int a=10;
DEBUG_PRINT("%d\n",a);
char c[]="123123l123";
DEBUG_RUN(
printf("%s",c);
)
Gis URL: https://gist.github.com/m2kar/6c9acef7a7cbf6540f40f74f5756be35
- 版权声明:本文为 m2kar 的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
- 作者: m2kar
- 打赏链接: 欢迎打赏m2kar
- 邮箱: m2kar.cn#gmail.com
- 主页: m2kar.cn
- Github: github.com/m2kar
- CSDN: M2kar的专栏