一个关于#ifdef _DEBUG的解释

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
///////////////////////////////////////////////////////////////解释//////////////////////////////////////////////////////////////////////

定义了   _DEBUG后,由于定义了_DEBUG,编译器确定这是一个调试,编译   #ifdef   _DEBUG和#endif之间的代码。#undef   表示清除当前定义的宏,使得THIS_FILE无定义。__FILE__   是编译器能识别的事先定义的ANSI   C   的6个宏之一。#define   new   DEBUG_NEW   
  DEBUG_NEW定位内存泄露并且跟踪文件名.   
------------------------------------------------------------------------------------------------------------------------------------------

#ifdef     _DEBUG     //   判断是否定义_DEBUG   
  #undef     THIS_FILE     //   取消THIS_FILE的定义   
  static     char     THIS_FILE[]=__FILE__;     //   定义THIS_FILE指向文件名   
  #define     new     DEBUG_NEW     //   定义调试new宏,取代new关键字   
  #endif     //   结束

--------------------------------------------------------------------------------------------------------------------------------------------

#ifdef     _DEBUG     //如果是debug状态   
  #undef     THIS_FILE     //清除THIS_FILE   
  static     char     THIS_FILE[]=__FILE__;     //定义THIS_FILE为 //__FILE__(这是当前文件全路径名字)       
  #define     new     DEBUG_NEW     //定义new为DEBUG_NEW(这个可以检测到内存泄露之类的问题,其实就是可以使用crt开头的那几个调试函数)   
  #endif

posted on 2014-11-27 10:34  竹林剑客  阅读(169)  评论(0编辑  收藏  举报

导航