CView中
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif我的程序中
×××.AssertValid();使用的时候没有在前后加DEBUG宏,为什么在Release版中不报错?

解决方案 »

  1.   

    AssertValid是CObject实实在在的虚函数,而且!!!它的定义函数体内加了_DEBUG宏
    而派生类的AssertValid是加了_DEBUG宏声明和定义的
    这样,但是使用时,当然是D版使用的是派生类的,但是到了R版,这个函数就是基类的――而这在R版是个空函数!!!
      

  2.   

    调试断言语句只在debug版中有效
    你想在release中调试,只有用messagebox或者调试文件之类的东西啦
    有一些第三方工具可以用,如debugview
      

  3.   

    在Release之下根本就不会编译进可执行文件,文件的体积只有DEBUG方式下的三分之一左右。