C/C++ Debug和_DEBUG区别

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言 pthread

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 面向对象

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 设计模式

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ STL

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 技术杂谈

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 常用函数


一.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

案例代码:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C/C++ Debug和_DEBUG区别
//@Time:2022/02/28 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/


#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. C语言 数组下标越界和内存溢出区别
  2. C语言 使用指针遍历数组
  3. C语言 指针和数组区别
  4. C语言 指针数组和数组指针区别
  5. C语言 野指针
  6. C语言 函数值传递和址传递
  7. 函数不定长参数
  8. C语言 函数指针
  9. C语言 指针函数
  10. C语言 回调函数 callback
  11. C语言 #pragma once
  12. C语言 #include <> 与 #include “” 区别
  13. C语言 const 修饰函数参数
  14. C语言 const 和 define 区别
  15. C语言 va_start / va_end / va_arg 自定义 printf 函数
  16. C语言 main 函数参数 main(int argc, char *argv[])
  17. C语言 结构体struct简介(一)
  18. C语言 结构体struct定义和使用(二)
  19. C语言 结构体struct数组(三)
  20. C语言 结构体struct指针(四)
  21. C语言 结构体struct成员函数(五)
  22. C语言 结构体struct嵌套(六)
  23. C语言 结构体struct值传递和址传递(七)
  24. C/C++ error: cannot assign to non-static data member within const member function ‘xxxx’
  25. C++ 关于类中 const 的使用
  26. C/C++ 条件编译 #ifdef
  27. C/C++ error C2065: “M_PI”: 未声明的标识符
  28. C/C++ error C2027: 使用了未定义类型“std::tuple”
  29. C/C++ vs 没有匹配 if 的非法 else 问题解决办法
  30. C/C++ Visual studio 中文注释导致编译不能通过
  31. C/C++ error C2589: “(”: “::”右边的非法标记
  32. C/C++ error:表达式是必须修改的左值
  33. C/C++ error C4996: ‘getch’: The POSIX name for this item is deprecated. Instead, use the ISO C++ conf
  34. C/C++ error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型
  35. C/C++ std::string 字符串分割
  36. Visual Studio 中 dumpbin 工具使用
  37. C/C++ error LNK2005:”XXX已经在 XXX.obj 中定义
  38. C/C++ 判断字符串是否为 utf-8 编码
  39. C/C++ uafxcwd.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new(unsigned int)” (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义解决办法
  40. C/C++ nafxcw.lib(appui1.obj) : error LNK2005: “class CWinApp * __cdecl AfxGetApp(void)” (?AfxGetApp@@YAPEAVCWinApp@@XZ) 已经在 uafxcwd.lib(afxinl2.obj) 中定义
  41. C/C++ error C2027: 使用了未定义类型 std::basic_ifstream<_Elem,_Traits>
  42. C/C++ QT error: dependent ‘xxx’ does not exist.
  43. C/C++ CString 和 char* 相互转换
  44. C/C++ error C2065:”null”:未声明的标识符
  45. C/C++ Debug和_DEBUG区别

未经允许不得转载:猿说编程 » C/C++ Debug和_DEBUG区别
喜欢(0) 打赏

评论抢沙发

评论前必须登录!

文章付费之后,如果下载源码失败,请直接留言,博主看到消息会及时处理的,感谢配合!!!共勉!!

开始学习

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏