资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

ASSERT()宏的问题, 解决后很快结贴.

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

我在MFC下写程序,   我发现在afx.h中有这样的定义:  
  #define   VERIFY(f)                      
  但我在用Release编译的时候,却发现用这个宏,却得到不同的结果,   很是不解.  
   
  既然有这样的定义,   为什么它们两个不一样呢.  
   
  请同志们帮我看一下,   很是诧异.    
   
  谢谢.    
   
 

网友回答:

发表者:happyparrot

但我在用Release编译的时候,却发现用这个宏,却得到不同的结果  
  =======  
  你这句话什么意思?我也不解,能不能说清楚一点???  
  ASSERT只在debug下有效。VERIFY在Release下也有效

发表者:DentistryDoctor

Release时此宏没有作用。

发表者:DentistryDoctor

#ifdef   _DEBUG  
  #define   VERIFY(f)                     ASSERT(f)  
  ...  
  #else  
  #define   VERIFY(f)                     ((void)(f))  
  ...  
  #endif

发表者:bluwindhrt

在Debug版下,VERIFY就等于ASSERT。它们的区别在Release版下:  
  Release版下,ASSERT;整句都不被编译,也就是说expression语句在Release版下不会计算,如果你在里面有像i++等等之类的话,Release版与Debug版就会有不同的执行结果;  
  VERIFY;在Release版下则相当于expression;也就是说VERIFY的作用被去除,但expression语句仍被计算。


 

 
热门推荐笔记本: 顶星笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved