在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 <THIS_FILE> in line <__LINE__>。