Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 22:38:29
visual c++ MFC调试宏

visual c++ MFC调试宏

visual c++ MFC调试宏

在介绍MFC调试宏之前,读者需要理解两个概念:跟踪和断言。

跟踪可以让程序在运行时遇到跟踪宏在输出窗口显示指定信息。

断言可以让程序在断言条件不成立时暂停程序的运行。

众所周知,调试就是找出程序设计时存在的错误,而跟踪和断言在查找程序设计错误时是非常有效的。MFC提供了一些跟踪和断言宏用于程序的调试,其中最常用的宏有TRACE、ASSERT和ASSERT_VALID。

注意:这些MFC调试宏只用于Debug版应用程序。

1.跟踪宏TRACE

TRACE宏的功能是让程序在运行时遇到TRACE宏时在输出窗口显示指定信息。其格式如下:

TRACE(<表达式>);
其中,参数<表达式>是由输出格式和变量等组成的表达式,其格式与用法与printf()函数一样,只是将<表达式>的计算结果输出到Output窗口中。

2.断言宏ASSERT

ASSERT宏的功能是当ASSERT宏的参数不为真时,暂停程序的执行。其格式如下:

ASSERT(<条件表达式>);
当参数<条件表达式>的运算结果为真时,程序继续执行;如果为假,则暂停程序的运行,并弹出一个对话框,告诉用户程序暂停运行的行及所在文件的信息。用户可以根据情况选择终止运行、调试程序或继续运行。

3.断言有效宏ASSERT_VALID

ASSERT_VALID的语法如下:

ASSERT_VALID(<指针>);
ASSERT_VALID宏用于检查指针和对象的有效性。对于一般指针,只检查指针是否为空。对于MFC类对象指针,还调用CObject::AssertValid()成员函数判断对象是否合法。

ASSERT_VALID与ASSERT类似,也是使用对话框提示用户指针或对象无效的。

4.应用

下面例子是利用AppWizard生成的单文档应用程序框架中系统生成的代码:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failed to create toolbarn"); //使用跟踪宏

return -1; // fail to create

}

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

// http://www.isstudy.com

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

return 0;

}

如果创建失败,在Output窗口会出现提示信息,如图1所示。

如果创建ToolBar失败,在Output窗口中显示的提示文本



图1 跟踪宏的输出结果




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759