VC 中ASSERT宏和VERIFY宏的区别

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

上学的时候经常看到一些VC编程方面的书上说,在用VC开发程序的时候,最好用VERIFY宏代替ASSERT,

当时不知道是其中的原因,今天看了两个宏的定义,终于明白了。

1、在DEBUG模式下,两个宏的功能是一样的

2、在RELEASE模式下,ASSERT不会对参数里的表达式进行计算,VERIFY会计算里面的表达式(如果是函数,将会调用该函数)。 

部分定义如下:

#ifdef _DEBUG

#define VERIFY(f)          ASSERT(f)

#else

#define ASSERT(f)          ((void)0)
#define VERIFY(f)          ((void)(f))

在VC的afx.h头文件中可以看到完整定义。

assertassert_valid,verify,trace用法 对于开始学vc的人,对于assertassert_valid,verify,trace的感到很奇怪,总是觉得很难掌握似的,其实这些主要是没有理清楚他们各自之间深层次的意义。 立即下载

相关推荐

vcASSERT()VERIFY()区别

ASSERTVERIFY在Debug模式下作用基本一致,二者都对表达式的值进行计算,如果值为非0,则什么事也不做;如果值为0,则输出诊断信息。 ASSERTVERIFY在Release模式下效果完全不一样。ASSERT不计算表达式的值,也不会输出诊断信息;VERIFY计算表达式的值,但不管值为0还是非0都不会输出诊断信息。

C/C++ 中与预处理使用方法大全 (VC)

原文:C/C++ 中与预处理使用方法大全 (VC) 作者:Breaker <breaker.zy_AT_gmail> C/C++ 中的 (#define) 与预处理 (#if/#ifdef/#pragma) 的使用方法大全、使用技巧 开发环境:VC 2005 关键字:, 预定义, 预处理, 预编译头, VC, #pragma, 编译选项, 程序区段 RTFM: Re...

爱.NET 1079

在非MFC程序中使用调试 ASSERT(),VERIFY() TRACE()

在非MFC程序中使用调试   ASSERT(),VERIFY()   TRACE()   作者:Gabriel   Fleseriu   译者:WinDancer   From:http://www.x-temple.com/       游戏制作已经开始采用C++了,却鲜有人选择使用MFC。但笔者觉得的   ASSERT(),VERIFY()   TRACE()这几个很好

weicaijiang的专栏 651

孙鑫VC++讲座笔记-(3)MFC程序框架的剖析

1,寻找WinMain人口:在安装目录下找到MFC文件夹下的SRC文件夹,SRC下是MFC源代码。路径:MFC|SRC|APPMODUL.CPP:_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ // call shared/exported WinMain return

hbyufan的专栏 8649

AfxBeginThread函数初探

 在进行多线程程序设计的时候,我们经常用到AfxBeginThread函数来启动一条线程该函数使用起来非常的简单方便,其定义如下CWinThread* AfxBeginThread(    AFX_THREADPROC pfnThreadProc,//线程函数地址    LPVOID pParam,//线程参数    int nPriority = THREAD_PRIORITY_NORMAL,/

vcforever的专栏 7228

assertassert_valid,verify,trace

 对于开始学vc的人,对于assertassert_valid,verify,trace的感到很奇怪,总是觉得很难掌握似的,其实这些主要是没有理清楚他们各自之间深层次的意义。这些都是我平时的学习笔记,可能有些是网上的资源,如果有重复请大家不要见怪~ASSERT()    ASSERT()被测试它的参数,若参数为0,则中断执行并打印一段说明消息。在 Release 版本的程序中它不起任何作用。

josling的专栏 2096

VC调试方法大全

VC调试方法大全.

仅以此博客记录日常学习工作中所思所得,水平有限,难登大雅,万望海涵。 2283

VC下DebugRelease区别

一、VC下DebugRelease区别  Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小运行速度上都是最优的,以便用户很好地使用。  Debug Release 的真正区别,在于一组编译选项。  Debug 版本  参数 含义  /MDd /MLd 或 /MTd 使用

yiziweiyang的专栏 426

VC++ TRACE

TRACE对于VC下程序调试来说是很有用的东西,有着类似printf的功能;该仅仅在程序的DEBUG版本中出现,当RELEASE的时候该就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。 使用非常简单,格式如下: TRACE("DDDDDDDDDDD"); TRACE("wewe%d",333); 同样还存在TRACE0,TRACE1,TRACE2。。。分别对应0,1,

MrTeq的专栏 1024

细说DebugRelease区别

VC下DebugRelease区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常。网上查找了些资料,在这 罗列汇总下,做为备忘~ 一、Debug Release 的区别 Debug 通常称为调试版本,它包含...

weixin_33845477的博客 195

Visual C 开发工具与调试技巧整理

 己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,呵呵,总是需要上网查资料来解决,在这里把自己用到上网查的一些技巧摘录如下,希望对大家有用,省去大家再去搜索的烦恼。1.如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disab

newstarao的专栏 533

verifyassert区别

上学的时候经常看到一些VC编程方面的书上说,在用VC开发程序的时候,最好用VERIFY代替ASSERT,当时不知道是其中的原因,今天看了两个的定义,终于明白了。1、在DEBUG模式下,两个的功能是一样的2、在RELEASE模式下,ASSERT不会对参数里的表达式进行计算,VERIFY会计算里面的表达式(如果是函数,将会调用该函数)。 部分定义如下:#ifdef _DEB...

weixin_34270865的博客 192
上一篇: 关于windows错误信息(1407:找不到窗口类别)的原因
下一篇: COM 技术内幕学习之二 (接口)
InsideKernel
博客等级 码龄19年 5粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值