Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1251351
  • 博文数量: 264
  • 博客积分: 10772
  • 博客等级: 上将
  • 技术积分: 2325
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-25 11:54
文章分类

全部博文(264)

文章存档

2012年(4)

2011年(51)

2010年(31)

2009年(57)

2008年(51)

2007年(70)

分类: C/C++

2007-12-20 00:12:41

/*这一系列文章《C++ Tips》是公司Code Committee专家会推荐工程师看的,感觉很好,拿出来与大家共同提高。并不是知道多少会使人与人产生差别,真正的差别在于你能做到多少。

--coofucoo
*/ 
Debug版和Release版的程序
程序在开发过程中必然有许多程序员加的调试信息。我曾经参与过这样的事:当程序开发结束时,群众被发动起来删除程序中的调试信息,何必呢?为什么不像VC++那样建立两个版本的目标代码?一个是debug版本的,一个是Release版的。那些调试信息是那么的宝贵,在日后的维护过程中也是很宝贵的东西,怎么能说删除就删除呢?利用预编译技术吧,如下所示声明调试函数:
#ifdef DEBUG
void TRACE(char* fmt, ...)
{
   ......
}
#else
#define TRACE(char* fmt, ...)
#endif
于是,让所有的程序都用TRACE输出调试信息,只需要在在编译时加上一个参数“-DDEBUG”,如:
    cc -DDEBUG -o target target.c
于是,预编译器发现DEBUG变量被定义了,就会使用TRACE函数。而如果要发布给用户了,那么只需要把取消“-DDEBUG”的参数,于是所有用到 TRACE宏,这个宏什么都没有,所以源程序中的所有TRACE语言全部被替换成了空。一举两得,一箭双雕,何乐而不为呢?
顺便提一下,几个个很有用的系统宏,一个是“__FILE__”,一个是“__LINE__”,分别表示,所在的源文件和行号,当你调试信息或是输出错误时,可以使用这两个宏,让你一眼就能看出你的错误,出现在哪个文件的第几行中。这对于用C/C++做的大工程非常的管用;另外两个:一个是“__TIME__”、一个是“__DATE__”,分别表示执行到调用该宏的时候的系统时间和日期,这在日志中记录时间时很方便。
阅读(1771) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~