在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下。所以,很多人会选择使用宏定义的方式来输出调试语句。
编译器内置宏,ANSI C标准中有几个标准预定义宏(也是常用的):
__LINE__: 在源代码中插入当前源代码行号;
__FILE__: 在源文件中插入当前源文件名;
__DATE__: 在源文件中插入当前的编译日期
__TIME__: 在源文件中插入当前编译时间;
__STDC__: 当要求程序严格遵循ANSI C标准时该标识被赋值为1;
__cplusplus: 当编写C++程序时该标识符被定义。
测试源码:
#include "stdafx.h" #ifdef _DEBUG #define DEBUG(format,...) printf("File: "__FILE__", Line: %05d: "format"\n", __LINE__, ##__VA_ARGS__) #else #define DEBUG(format,...) #endif //!_DEBUG int _tmain(int argc, _TCHAR* argv[]) { DEBUG("file line Test %d", 1); return 0; }
测试结果:
时间: 2024-10-02 10:55:46