假设我们有一个简单的 iOS 应用,需要在调试模式下输出日志信息。你可以在代码中使用#ifdef DEBUG宏如下: #ifDEBUGprint("调试模式下日志信息")#else// 在发布模式下不输出日志#endif 1. 2. 3. 4. 5. 在上面的例子中,当你以 Debug 模式编译项目时,日志信息会被打印到控制台,而在 Release 模式下,相关代码...
#ifdef _DEBUGvirtual void AssertValid() const; //assert(断言)valid(有效的,正确的) virtual void Dump(CDumpContext& dc) const; //存储上下文 #endif这两个函数是调试用的,第一个函数检查可用性,即是否有效 第二个函数如果未更改的话,最终调用的是Cwnd::Dump(); 输出窗口类名,标题名等一系列信息(在输出...
#ifdef _DEBUG//如果是debug状态#undefTHIS_FILE//清除THIS_FILEstaticcharTHIS_FILE[]=__FILE__;//定义THIS_FILE为__FILE__(这是当前文件全路径名字)#definenew DEBUG_NEW//定义new为DEBUG_NEW(这个可以检测到内存泄露之类的问题,其实就是可以使用crt开头的那几个调试函数)#endif 在用vc时,利用AppWizard会产...
ifdef _DEBUG的意思是如果预定义了名字_DEBUG,则函数执行该语句里的代码 即hins=::LoadLibrary("Debug\\iodevui.dll");并且抛弃下面的代码 否则抛弃上面的代码而执行#else里的,即 hins=::LoadLibrary("Release\\iodevui.dll");endif表示该预处理结束。这样的代码一般都是在开发中用到,这样做的目的...
在DEBUG_NEW的定义中没有直接使用__FILE__,而是用了THIS_FILE,其目的是为了减小目标文件的大小。假设在某个cpp文件中有100处使用了new,如果直接使用__FILE__,那编译器会产生100个常量字符串,这100个字符串都是这个cpp文件的路径名,显然十分冗余。如果使THIS_FILE,编译器只会产生一个常量字符串,那100处new的...
ifdef _DEBUG#else#endif这是C++中的预处理器。#ifdef _DEBUG的意思是如果预定义了名字_DEBUG,则函数执行该语句里的代码即hins=::LoadLibrary("Debug\\iodevui.dll");并且抛弃下面的代码。在工程设置里有一些设置会对该工程自动产生一系列的宏,用以控制程序的编译和运行。就好象楼上说的一样,如果...
这是 条件编译 指令,表示程序若是调试版的,就编译 ifdef _DEBUG到 ENDIF 之间的代码,当你在vc++编译器Build>Set Active Configration下的对话框中选择:程序名 - Win32 Debug时,此程序就是调试版的
在编程过程中,我们通常会使用条件编译指令来控制代码的编译。`#ifdef`是一个预处理指令,用于检查给定的宏是否已定义。`DEBUG`通常是一个宏,用于表示当前编译的是调试版本。 在发布应用程序时,...
简单地说,作用就是在调试阶段输出一些调试信息,调试版本,编译连接的时候用 gcc -debug a.c 正式发布版本编译的时候用 gcc a.c
这几行代码重新定义默认的 new 操作符为DEBUG_NEW(MFC自己写的一个宏),使得任何通过new新建出来的对象或者内存块都会被记录下来,如果你的程序此后没有释放它们的话,在你退出调试状态时,VC会在输出窗口里面显示出来这些没有被释放的对象或者内存块的信息(这就是所谓的“内存泄露”)。此外,因为...