转载请注明出处:http://blog.csdn.net/ict2014/article/details/17335559
在开发程序或者大型项目的时候,特别需要打印一些中间的状态信息到日志文件中,方便跟踪程序的执行流程,加速程序开发的进度。
但是在发布程序的时候,我们并不想打印那些对用户是无关紧要的中间过程信息。
那应该怎么办呢?
此时我们可以定义DEBUG宏控制打印的时间。当DEBUG这个宏已经定义的时候,就打印相关的信息,如果没有被定义,就不打印这个信息。
我们通过如下一个简单的累加计数求和的小程序来看看“DEBUG宏”的功能:
/* 此程序用于在debug的时候输出状态信息
* 在release版本的时候不打印这些调试信息
* 方便在开发程序的时候对程序执行流程进行跟踪
*
* 作者:张海波
* 时间:2013-12-15
* 联系方式:newchance@126.com
*/
#include <iostream>
using namespace std;
//定义编译选项的开关
//如果不想打印中间信息的时候,就注释掉此行
#define DEBUG
//debug模式下输出相应中间信息
void DebugOutput(const int& add,
const int& result)
{
#ifdef DEBUG
cout << "i = " << add
<< " result = " << result
<< endl;
#endif
}
int main(int argc, char** argv)
{
//一个循环,求1+2+3+...+100 = ?
int i = 0, result = 0;
for(i = 0; i <= 100; ++i)
{
result += i;
DebugOutput(i,result);
}
return 0;
}
在Linux命令行下:g++ -o Debug Debug.cpp生成Debug可执行文件,"./Debug"执行即可。
在Windows下,利用vs直接运行即可。
上述程序的输出结果如下:
同时,如果不想打印这些状态信息的话,就把程序的第16行注释掉即可。
这样在开发程序的过程中,就可以额外的定义一个debug类,用于这些中间状态信息的打印。