JMVC中的宏——macros.h分析
说明:
1. OT表示exp==true时执行,OF表示exp==false时执行
2. NOK表示exp!=m_nOK时执行
3. m_nOK和m_nERR都属于ERR_CLASS类
4. 宏的第一个参数是表达式exp,如果有第二个参数的话,第二个参数为retVal,用来做返回值
表1 macros.h宏定义梳理表
说明 |
代码示意 |
形式 |
不判断,直接执行 |
判断表达式TRUE或FALSE |
判断表达式是否等于m_nOK |
先ASSERT(0),再返回m_nERR |
ASSERT(0); return m_nERR; |
R* |
RERR
|
ROF,ROT |
RNOK |
没有ASSERT(0),直接返回m_nERR |
return m_nERR; |
R*S |
RERRS |
ROFS,ROTS |
RNOKS |
先ASSERT(0),再返回指定值(宏的第二个参数) |
ASSERT(0); return retVal; |
R*R |
RVAL |
ROFR,ROTR |
RNOKR |
没有ASSERT(0),返回指定值(宏的第二个参数) |
return retVal; |
R*RS |
无 |
ROFRS,ROTRS |
RNOKS |
先ASSERT(0),再返回VOID |
ASSERT(0); return; |
R*V |
无 |
ROFV,ROTV |
RNOKV |
没有ASSERT(0),返回VOID |
return; |
R*VS |
无 |
ROFVS,ROTVS |
RNOKVS |
ASSERT(0),不返回任何值 |
ASSERT(0); |
A* |
AF |
AOF,AOT |
ANOK |
RERR、RERRS、RVAL、AF的定义:
#define RERR( ) \
{ \
ASSERT( 0 ); \
return ERR_CLASS::m_nERR; \
}
#define RERRS( ) \
{ \
return ERR_CLASS::m_nERR; \
}
#define RVAL( retVal ) \
{ \
ASSERT( 0 ); \
return retVal; \
}
#define AF( ) \
{ \
ASSERT( 0 ); \
}
其他定义
#if defined( _DEBUG ) || defined( DEBUG )
#define CHECK( exp ) ASSERT( exp )
#define AOT_DBG( exp ) AOT( exp )
#define AOF_DBG( exp ) AOF( exp )
#define ANOK_DBG( exp ) ANOK( exp )
#define DO_DBG( exp ) ( exp )
#else // _DEBUG
#define CHECK( exp ) ((VOID_TYPE)( exp ))
#define AOT_DBG( exp ) ((VOID_TYPE)0)
#define AOF_DBG( exp ) ((VOID_TYPE)0)
#define ANOK_DBG( exp ) ((VOID_TYPE)0)
#define DO_DBG( exp ) ((VOID_TYPE)0)
#endif // _DEBUG
#if !defined( ASSERT )
#define ASSERT assert
#endif
#define VOID_TYPE Void
#define ERR_CLASS Err
#define ERR_VAL ErrVal