对于Assert宏的使用,我一直有这样的疑问:Assert只是出现在Debug中,当判断的条件不成立时,便会引发一个异常。但时在Release中,Assert是不会起作用的。也就是说,只要Assert所判断的条件在Debug中不会出现了,那么在release中就绝对不会出现。但是有没有可能在Release中出现Assert所判断的条件呢。这个条件的出现并不依赖于是Debug还是Release。如果这样的话,Assert不起作用,程序便会产生不可设想的后果啊。
解决方案 »
- 如何在MFC下建立Opengl框架
- 怎么在点击对话框以外的地方就关闭对话框
- 关于GetDeviceCaps
- 在JAVASCRIPT中调用ACTIVEX方法时,传递参数的问题
- 关于自定义消息的问题,是不是只有CWnd派生类的成员函数才能被绑定为消息处理函数?
- 关于时间的计算?
- 我的程序24小时硬盘读写操作30万次(各种文件主要ini文件)对硬盘...
- VC6.0好还是7.0好?
- 关于快捷方式的问题!
- 100分 求OPENGL高级编程与可视化系统开发 附书光盘
- 滚动条的OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )事件问题
- 由Delphi转VC++,有类似经验的兄弟给点建议。
如果有问题,在Debug的时候就发现了。确信无误以后再做成Releas版的比较安全!
ASSERT(条件表达式);
若程序执行正确,条件表达式应该为非0
如果表达式为零或假,那你的程序在某个地方一定有错误.举个例子:比如CWnd的ShowWindow操作
_AFXWIN_INLINE BOOL CWnd::ShowWindow(int nCmdShow)
{ ASSERT(::IsWindow(m_hWnd)); return ::ShowWindow(m_hWnd, nCmdShow); }
既然是要显示窗口,那么这个窗口(CWnd::m_hWnd)一定得存在.
否则(CWnd::m_hWnd无效或为空值)................换句话说:若CWnd::m_hWnd无效或为空,就绝对不会调用CWnd::ShowWindow()
若调用CWnd::ShowWindows(),那么次窗口一定存在.在调试版,我们的程序有可能出这样那样的错误,所以要用ASSERT等捕获错误.
而在Release版,上术错误是绝对不允许发生的.