assert 是调试的时候的断言。不影响逻辑,也不应该影响逻辑。
而 return false 才是程序的逻辑,程序跑的时候的流程。
比如:
ATLASSERT(ppv);
if (!ppv)
{
return E_POINTER;
}
*ppv = NULL;

解决方案 »

  1.   

    怎么我用 IE11 看到的 C++的代码格式是这个德行:ATLASSERT(ppv);<br abp="476">
    if (!ppv)<br abp="477">
    {<br abp="478">
    return E_POINTER;<br abp="479">
    }<br abp="480">
    *ppv = NULL;
      

  2.   


    你一般同时使用assert和return false吗 ? 感觉有点烦。
      

  3.   


    所谓断言,就是逻辑上,程序运行到断言位置的时候,某个值肯定应该是这样的,如果不是这样,那么就肯定运行失败
    比如,你定义了一个CWnd对象,并且调用了Create方法,那么其后,你就都可以肯定其m_hWnd值不会是NULL。这就是断言
      

  4.   

    assert 一般调试的时候方便提示你对象设置失败(就是没有达到你的要求),realse的时候不编译