C/C++ Debug和_DEBUG区别

最后更新于:2020-08-11 22:18:45

一.Debug和Release区别

DebugRelease只是Visual Studio或者其他IDE的两个编译的选项,两者区别如下:

Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。

Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。

Debug允许对源码进行调试,而Release则不对源码进行调试

二.Debug和_DEBUG区别

_DEBUG是一个宏定义,只有在Debug编译的时候才会被定义,而release编译的时候是不存在这个宏定义的;

#ifdef _DEBUG
    ........     // debug编译的时候会执行的代码
#else
    ........     // release编译的时候会执行的代码
#endif

三._DEBUG使用

对于开发者而言,在调试的时候,我们会添加很多输出日志,便于观察代码的执行情况;
而对于客户而言,客户并不需要这些东西,所以可以通过宏定义_DEBUG来解决这个问题;

#ifdef _DEBUG
    #define OUT_PUT_LOG_INFO 1  // debug编译的时候OUT_PUT_LOG_INFO值为1
#else
    #define OUT_PUT_LOG_INFO 0  // release编译的时候OUT_PUT_LOG_INFO值为0
#endif



案例代码:

/************************************************************************/
/*@文件名      : C/C++ Debug和_DEBUG区别.cpp
/*@日  期      : 2020/07/22 21:52
/*@作  者      : 猿说编程
/*@公众号      : 猿说编程
/*@博客        : www.shuopython.com
/*@描述        : C语言教程 - C/C++ Debug和_DEBUG区别
/************************************************************************/

#include<stdlib.h>
#include<stdio.h>

#ifdef _DEBUG
#define OUT_PUT_LOG_INFO 1  // debug编译的时候OUT_PUT_LOG_INFO值为1
#else
#define OUT_PUT_LOG_INFO 0  // release编译的时候OUT_PUT_LOG_INFO值为0
#endif

void main()
{

#if OUT_PUT_LOG_INFO
    printf("debug  \n");
#else
    printf("release \n");
#endif

    system("pause");
}

debug编译输出:

debug

release编译输出:

release


猜你喜欢

1. 三目运算符

2. 逗号表达式

3. NaN(Not a Number)

4. memcpy/strcpy/strcpy_s区别

5. unicode和多字节区别

6. 判断windows操作系统是x86/x64

7. _WIN32/WIN32/_WIN64/WIN64区别

8. Visual Studio x86/x64/Any CPU编译区别

9. Debug和Release区别




转载请注明: 猿说编程 » C/C++教程 » Debug和_DEBUG区别

赞赏

微信赞赏支付宝赞赏