在VC中检查变量合法性一般利用ASSERT(x)宏,ASSERT的作用在于检查表达式是否为假或为NULL,如果为假则会引发异常。在MFC中ASSERT宏被大量使用,例如:
BOOL CWnd::Attach(HWND hWndNew)
{
ASSERT(m_hWnd == NULL); // only attach once, detach on
destroy
// …
return TRUE;
}
void CString::AllocBuffer(int nLen)
{
ASSERT(nLen >= 0);
ASSERT(nLen <= INT_MAX-1); //
}
void CDocument::AddView(CView* pView)
{
// other code…
ASSERT(pView->m_pDocument == NULL);
ASSERT(m_viewList.Find(pView, NULL) == NULL);
}
当ASSERT失败并引发异常时会有对话框谈出并报告发生该ASSERT失败位置。报错信息如:assertion failed in file in line <__LINE__>。
aspectratio="t">
vc/images/10816/sp_teach_321.gif" src="./0011.files/image001.gif">