零基础 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区别
Debug
和 Release
只是 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
四.猜你喜欢
- C语言 数组下标越界和内存溢出区别
- C语言 使用指针遍历数组
- C语言 指针和数组区别
- C语言 指针数组和数组指针区别
- C语言 野指针
- C语言 函数值传递和址传递
- 函数不定长参数
- C语言 函数指针
- C语言 指针函数
- C语言 回调函数 callback
- C语言 #pragma once
- C语言 #include <> 与 #include “” 区别
- C语言 const 修饰函数参数
- C语言 const 和 define 区别
- C语言 va_start / va_end / va_arg 自定义 printf 函数
- C语言 main 函数参数 main(int argc, char *argv[])
- C语言 结构体struct简介(一)
- C语言 结构体struct定义和使用(二)
- C语言 结构体struct数组(三)
- C语言 结构体struct指针(四)
- C语言 结构体struct成员函数(五)
- C语言 结构体struct嵌套(六)
- C语言 结构体struct值传递和址传递(七)
- C/C++ error: cannot assign to non-static data member within const member function ‘xxxx’
- C++ 关于类中 const 的使用
- C/C++ 条件编译 #ifdef
- C/C++ error C2065: “M_PI”: 未声明的标识符
- C/C++ error C2027: 使用了未定义类型“std::tuple”
- C/C++ vs 没有匹配 if 的非法 else 问题解决办法
- C/C++ Visual studio 中文注释导致编译不能通过
- C/C++ error C2589: “(”: “::”右边的非法标记
- C/C++ error:表达式是必须修改的左值
- C/C++ error C4996: ‘getch’: The POSIX name for this item is deprecated. Instead, use the ISO C++ conf
- C/C++ error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型
- C/C++ std::string 字符串分割
- Visual Studio 中 dumpbin 工具使用
- C/C++ error LNK2005:”XXX已经在 XXX.obj 中定义
- C/C++ 判断字符串是否为 utf-8 编码
- C/C++ uafxcwd.lib(afxmem.obj) : error LNK2005: “void * __cdecl operator new(unsigned int)” (??2@YAPAXI@Z) 已经在 LIBCMTD.lib(new.obj) 中定义解决办法
- C/C++ nafxcw.lib(appui1.obj) : error LNK2005: “class CWinApp * __cdecl AfxGetApp(void)” (?AfxGetApp@@YAPEAVCWinApp@@XZ) 已经在 uafxcwd.lib(afxinl2.obj) 中定义
- C/C++ error C2027: 使用了未定义类型 std::basic_ifstream<_Elem,_Traits>
- C/C++ QT error: dependent ‘xxx’ does not exist.
- C/C++ CString 和 char* 相互转换
- C/C++ error C2065:”null”:未声明的标识符
- C/C++ Debug和_DEBUG区别
ChatGPT 3.5 国内中文镜像站免费使用啦
暂无评论内容