背景:
很多时候我们写代码,想要看看函数或者算法执行的对不对、是否达到了我们想要的效果,
那么,最直接的办法是把函数或者算法所操作数据显示出来看看,这样就需要写一些cout<<
直接输出的代码;
但是一旦代码达到了所要的效果,要发布了,或者给使用者使用了,这样就无需cout<<
,
这样我们又要手工去删除或者注释很多cout<<
,对于小程序来说工作量不是很大,但是对于一个大系统来说,工作量就相当大了。
有没有办法使得在debug的时候输出,release的时候不输出呢?
有的,可以用到debug宏。
ifdef _DEBUG
#ifdef _DEBUG
#endif
这是条件编译,即如果有#define _DEBUG
时语句中间的内容会被编译编译,否则忽略不编译
当你用debug生成时,VS的开发环境则自动的加上这个宏定义;
release时,没有这个宏。
所以debug时,可以使用这个特性,用输出来测试我们的代码是否正确。
- VS环境下,debug时编译器自动
#define _DEBUG
。这样可以直接用#ifdef _DEBUG .... #endif
- 也可以自己手动
#define DEBUG
;
release时 注释//#define DEBUG
,就可以使程序不编译 之间的代码。
编译器在内存中会维护一张关于
#define
的表结构。
总之,这是一种测试代码方法,还是第一种做法简便。