Chinaunix首页 | 论坛 | 博客
  • 博客访问: 659164
  • 博文数量: 134
  • 博客积分: 3158
  • 博客等级: 中校
  • 技术积分: 1617
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-30 22:36
文章分类

全部博文(134)

文章存档

2012年(2)

2011年(28)

2010年(68)

2009年(35)

2008年(1)

我的朋友

分类: WINDOWS

2010-09-25 15:40:50

@verify和assert的区别

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

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

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

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

部分定义如下:

#ifdef _DEBUG

#define ASSERT(f) \
 do \
 { \
 if (!(f) && AfxAssertFailedLine(THIS_FILE, __LINE__)) \
  AfxDebugBreak(); \
 } while (0) \

#define VERIFY(f)          ASSERT(f)

#define VERIFY(f)          ASSERT(f)

#else

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

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

阅读(1107) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~