几何尺寸与公差论坛

 找回密码
 注册
查看: 3994|回复: 3

Visual C++ MFC 中常用宏的含义

[复制链接]
发表于 2006-11-24 11:26:19 | 显示全部楼层 |阅读模式
Visual C++ MFC 中常用宏的含义



1. ASSERT
  
ASSERT(booleanExpression)
  
1.1
适用范围










只在DEBUG版中有效,常用来判断指针是否为空。



1.2作用

验证表达式booleanExpression的值。

当表达式的值为false,则输出诊断消息,并且终止程序运行。

  


1.3 Example


// 判断指针point是否为空

ASSERT (point != NULL);

2. TRACE
  

TRACE(exp)


2.1
适用范围

只在DEBUG版中有效,常用于调试状态,跟踪多个变量在某个时刻的值。比如,统计或分析不同代码段的执行时间。



2.2作用

当程序在调试状态下多次运行时,跟踪多个变量的值。
  

2.3 Example


// 跟踪且输出四个变量的值


TRACE(_T("\tVertex %d (%f, %f, %f)\n"), geometricID[k], pCoord[0], pCoord[1], pCoord[2]);



3TRYCATCH


CATCH(exception_class,exception_object_pointer_name)



3.1 适用范围


用于文件读写操作或与第三方组件通讯时,捕获并处理其异常。TRYCATCH一般都成对使用。



3.2 作用


捕获可能发生异常的代码块。



3.3 Example


// 捕获可能发生异常的代码块,并且抛出异常处理


try


{


CaxArchive << pCax;


}


catch (CException *e)


{


e->GetErrorMessage(ErrStr + 5, 120);


AfxMessageBox((LPCTSTR)ErrStr);


}


4. DECLARE_DYNAMICIMPLEMENT_DYNAMIC


DECLARE_DYNAMIC(class_name)


IMPLEMENT_DYNAMIC(class_name,base_class_name)



4.1 适用范围


识别从CObject派生的类的类型,比如,在CAD软件的二次开发时,扩展并自定义的类。



4.2作用或说明  


当程序运行时,可通过RUNTIME_CLASS宏和CObject::IsKindOf函数识别类的类型。


4.3 Example


// *.h


DECLARE_DYNAMIC(CCax_Curve)


// *.cpp


IMPLEMENT_DYNAMIC(CCax_Curve)














发表于 2006-12-19 14:59:35 | 显示全部楼层

回复: Visual C++ MFC 中常用宏的含义

CATCH_ALL(e)
{
  CWinThread* pWinThread = AfxGetThread();
  if ( pWinThread != NULL )
  {
   lResult = pWinThread->rocessWndProcException(e, &pThreadState->m_lastSentMsg);
   TRACE1("Warning: Uncaught exception in WindowProc (returning %ld).\n",
    lResult);
  }
  else
  {
   TRACE0("Warning: Uncaught exception in WindowProc.\n");
   lResult = 0;
  }
  DELETE_EXCEPTION(e);
}
END_CATCH_ALL
发表于 2007-9-7 14:23:16 | 显示全部楼层

回复: Visual C++ MFC 中常用宏的含义

下面这个宏,可以用在带提示的ASSERT
#ifdef _DEBUG
 #define ASSERT_MSG(e,msg) if(!(e)){AfxMessageBox(msg);ASSERT(0);}
#else
  #define AASSERT_MSG(e,msg)
#endif//
发表于 2007-9-7 14:23:56 | 显示全部楼层

回复: Visual C++ MFC 中常用宏的含义

Assert使用
  assert需要用在程序员认为肯定不会出错,或者不能容忍的错误的地方;而不能用在有可能出现的错误地方,比如:网络连接、数据库连接等等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-13 04:34 , Processed in 0.042829 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表