C调试宏的定义与使用
例
#ifdef DEBUG
#define debug(...) fprintf(stderr, "message(%s, %s(), %d): ", __FILE__, __FUNCTION__, __LINE__); fprintf(stderr, __VA_ARGS__)
#else
#define debug(...)
#endif
上面的宏的功能是:将debug定义为调试工具,会格式化的从标准错误流输出此时debug所处的文件名、函数名、行数、以及debug内部自定义的内容
此时,当代码中定义了DEBUG时,使用debug便能打印调试信息,当代码中没有定义DEBUG时,debug没有任何意义,什么都不执行,自动跳过。
如
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DEBUG
#ifdef DEBUG
#define debug(...) fprintf(stderr, "message(%s, %s(), %d): ", __FILE__, __FUNCTION__, __LINE__); fprintf(stderr, __VA_ARGS__)
#else
#define debug(...) do {} while (0)
#endif
int main(void)
{
//do which you want to do
//...
//..
debug("now-----------------\n");
return 0;
}
这个时候的debug便有打印信息的能力,执行结果为
再当取消掉DEBUG的定义时,程序执行便没有调试信息输出。