首先来了解一下文件默认的输出信息的函数:
#include<stdio.h>
int main()
{
printf("line : %d\n", __LINE__); //当前行数
printf("filename : %s\n", __FILE__); //当前文件名
printf("function : %s\n", __FUNCTION__); //当前函数
printf("time : %s\n", __TIME__); //当前时间
printf ("date : %s\n", __DATE__); //当前日期
return 0;
}
/*
输出:
line : 5
filename : C:\test3.cpp
function : main
time : 21:20:03
date : Dec 2 2017
*/
#ifdef DEBUG
//#define DPRINTF(fmt, args...) printf(fmt, ##args)
#define DPRINTF(fmt, args...) do { printf("%s\n%d\n", clean_filename(__FILE__), __LINE__); printf(fmt, ##args); } while(0)
#else
#define DPRINTF(fmt, args...)
#endif
其中cleam_finame((_FILE_)定义为
#ifdef DEBUG
static const char* clean_filename(const char* path)
{
const char* filename = path + strlen(path);
while(filename > path)
{
if(*filename == '/' || *filename == '\\')
{
return filename + 1;
}
filename--;
}
return path;
}
#endif
作用是只输出文件名,而省略掉文件路径
网友评论