C语言中常用的调试宏

荒凉一梦 提交于 2020-03-17 22:46:04

C语言中常用的调试宏

背景

在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);
)

Gist URL:

https://gist.github.com/m2kar/6c9acef7a7cbf6540f40f74f5756be35

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!