#ifdef DEBUG 这是什么意思呢

2024-11-19 08:29:51
推荐回答(4个)
回答1:

  #ifdef _DEBUG#else#endif这是C++中的预处理器。#ifdef _DEBUG的意思是如果预定义了名字_DEBUG,则函数执行该语句里的代码即hins=::LoadLibrary("Debug\\iodevui.dll");并且抛弃下面的代码。
  在工程设置里有一些设置会对该工程自动产生一系列的宏,用以控制程序的编译和运行。就好象楼上说的一样,如果你把代码夹在#ifdef DEBUG 和对应的 #endif 中间,那么这段代码只有在调试(DEBUG)下才会被编译。也就是说,如果在RELEASE模式下,这些代码根本就不会存在于最终代码里头。
  可以手动实现DEBUG的定义如:

   #define DEBUG
   那么#ifdef DEBUG 就会是真的。夹在中间的代码会进行编译,可以说,这些宏代码本身是面向编译器使用的,不要用来实现业务逻辑代码,这样会带来很不好的影响。

回答2:

这是条件编译,即如果有#define _DEBUG这个函数会编译,否则忽略,
当你用debug生成时(相对于release)开发环境则自动的加上这个宏定义,这两个函数有效。还需要更详细的吗

回答3:

#ifdef
_debug
#else
#endif
这是c++中的预处理器。
#ifdef
_debug的意思是如果预定义了名字_debug,则函数执行该语句里的代码
即hins=::loadlibrary("debug\\iodevui.dll");并且抛弃下面的代码
否则抛弃上面的代码而执行#else里的,即
hins=::loadlibrary("release\\iodevui.dll");
#endif表示该预处理结束。
这样的代码一般都是在开发中用到,这样做的目的是:在开发程序时,能够根据是否定义了_debug来选择执行其中的一段代码而忽略其它的。通常都是应用在软件升级中,如果用户花的钱多,他就能够获得指定的代码,花的钱少或者免费获得的就是另一部分代码,这些我也是听说。不过这段代码的作用就是这样

回答4:

这两个函数是调试用的,第一个函数检查可用性,即是否有效
第二个函数如果未更改的话,最终调用的是Cwnd::Dump();
输出窗口类名,标题名等一系列信息(在输出窗口中)
#ifdef _DEBUG
#endif
这是条件编译,即如果有#define _DEBUG这这两个函数会编译,否则忽略,
当你用debug生成时(相对于release)开发环境则自动的加上这个宏定义,这两个函数有效。还需要更详细的吗

答案来自:http://zhidao.baidu.com/question/15530834.html?fr=qrl3