在MFC的debug版本中,VERIFY宏对传给它的参数进行评估。如果值是0,那么宏将打印诊断信息,而且终止程序。如果非0就什么也不做。在release版本中,VERIFY只对传给他的参数评估但不打印信息也不中断程序。
ASSERT的功能和VERIFY差不多,只是不用在release版本。

解决方案 »

  1.   

    VERIFY和ASSERT都是诊断宏。一般来说,ASSERT对一些入口条件进行判断,使函数的参数合法。如果不合法,则给出错误。比如
    float GetSqareRoot(float m)
    {
        ASSERT(m>=0.0);
    //求平方根,参数必须为非负
        return sqrt(m);
    }
    VERIFY则对一些操作进行校验,确保是成功的。两者有相似之处。
      

  2.   

    MK和bigjim说得都不完全正确。
    ASSERT和VERIFY都是诊断宏,仅对DEBUG版本起作用,当诊断条件的结果为0(假)时显示错误信息,并可能终止程序。它们的不同点是:在RELEASE版本下,ASSERT宏不产生任何代码,即相当于ASSERT行是一个空语句;VERIFY宏内部的代码在RELEASE版本下产生执行代码,但VERIFY本身不作任何处理,即相当于没有VERIFY。